Nic*_*son 6 java spring android memory-leaks
我的代码中存在潜在的内存泄漏,我正在尝试找到解决方案.我正在使用Spring for Android框架.而且更具体了
RestTemplate.exchange();
Run Code Online (Sandbox Code Playgroud)
为了使飞行绑定.但是,当我进行内存分析时,我得到以下内容:
1.628个"com.products.Product"实例,由"dalvik.system.PathClassLoader @ 0x43692b80"加载,占用1.363.064(22,20%)个字节.这些实例是从"java.lang.Object []"的一个实例引用的,由""加载.支配树如下:
class com.products.ProductList @ 0x436d7ea8 System Class | 1.628 | 8 | 130.240 | 8
mFilteredProducts java.util.ArrayList @ 0x43a4eab0 | 1.628 | 24 | 130.240 | 6.552
array java.lang.Object [1628] @ 0x43bdc888 | 1.628 | 6.528 | 130.240 | 6.528
[274] com.products.Product @ 0x4398b038 | 1 | 80 | 80 | 760
[1175] com.products.Product @ 0x43b26868 | 1 | 80 | 80 | 808
........
以上是主宰树.但是我想知道是否有一种安全的方式来激活垃圾收集器.是个
System.gc();
Run Code Online (Sandbox Code Playgroud)
安全?但是,有没有办法停止内存泄漏?com.products.Product类只是一个简单的POJO,它将JSON字段绑定到相应的属性.通常,用于绑定JSON的POJO如下:
@JsonIgnoreProperties(ignoreUnknown = true) //must be there all times most likely
public class MyPojo {
@JsonProperty("Products")
private ArrayList<Product> products;
public ArrayList<Product> getProducts() {
return products;
}
public void setProducts(ArrayList<Product> products) {
this.products = products;
}
}
Run Code Online (Sandbox Code Playgroud)
com.products.Product:
@JsonIgnoreProperties(ignoreUnknown = true) //must be there all times most likely
public class Products {
@JsonProperty
private String prodnum;
@JsonProperty
private String brand;
@JsonProperty
private String name;
//get/set
}
Run Code Online (Sandbox Code Playgroud)
打电话System.gc()
是安全的。但它并不一定会触发实际的垃圾收集。调用此方法仅表明JVM 尽全力执行垃圾收集。但 Java 中没有办法强制它。
关于内存泄漏。看看ProductList
,为什么它拿着所有这些物体。如果仍从应用程序中的任何位置引用 ProductList,则所有这些产品将不会被发布。
归档时间: |
|
查看次数: |
334 次 |
最近记录: |