java - 内存泄漏,Android 的 Spring

标签 java android spring memory-leaks

我的代码中存在潜在的内存泄漏问题,我正在尝试寻找解决方案。我正在使用 Spring for Android 框架。更具体的是

  RestTemplate.exchange();

为了进行动态绑定(bind)。但是,当我进行内存分析时,我得到以下信息:

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();

安全吗?但是,有没有办法停止这种内存泄漏? 类 com.products.Product 只是一个简单的 POJO,它将 JSON 字段绑定(bind)到相应的属性。一般用于绑定(bind)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;
}
}

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
}

最佳答案

调用 System.gc() 是安全的。但它不一定会触发实际的垃圾收集。仅调用此方法建议 JVM 尽一切努力执行垃圾回收。但是在 Java 中没有办法强制执行它。

关于内存泄漏。查看 ProductList,为什么它包含所有这些对象。如果您的应用程序中的任何地方仍然引用 ProductList,则不会发布所有这些产品。

关于java - 内存泄漏,Android 的 Spring,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13876666/

相关文章:

java - 如何使用 testng 运行功能文件而不是功能文件的场景

java - Head First servlet 示例不起作用

java - PageNotFound - 在 DispatcherServlet 中未找到带有 URI [] 且名称为 'dispatcher' 的 HTTP 请求的映射

java - Spring MVC 隐藏日期字段未映射到 Controller

java - 使用 ProcessBuilder 从 Java 交互式进程读取 InputStream

java - 运行 firefox 时出现 selenium 错误

android - x264 构建错误 - Android

android - 仅在物理设备而非模拟器上运行 Android 应用程序

android - ImageView 在 Camera Surface View 后面移动

java - 将 Spring Integration 与 Spring 批处理管理一起使用时出错