내 코드에서 잠재적 인 메모리 누수가 있고 해결책을 찾으려고합니다. Android 프레임 워크 용 Spring을 사용하고 있습니다. 그리고 더 구체적으로메모리 누수, 안드로이드 용 봄
RestTemplate.exchange();
온 더 플라이 바인딩을 만들기 위해서. 그러나 메모리 분석을 할 때 다음을 얻습니다.
1.628 "com.products.Product"의 인스턴스, "dalvik.system.PathClassLoader @ 0x43692b80"이 1.363.064 (22,20 %) 바이트를 차지합니다. . 이러한 인스턴스는 ""로로드 된 "java.lang.Object []"의 한 인스턴스에서 참조됩니다. dominator 트리는 다음과 같습니다.
. 그러나 가비지 컬렉터를 활성화하는 안전한 방법이 있는지 궁금합니다.클래스 com.products.ProductList @ 0x436d7ea8 시스템 클래스 | 1.628 | 8 | 130.240 | 8
mFilteredProducts 인 java.util.ArrayList @ 0x43a4eab0 | 1.628 | 24 | 130.240 | 0x43bdc888 @ 6.552
배열 java.lang.Object 상위 [1,628] | 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 클래스는 JSON 필드를 해당 속성에 바인딩하는 단순한 POJO입니다. 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
}