मेरे पास मेरे कोड पर एक संभावित मेमोरी लीक है और मैं समाधान खोजने की कोशिश कर रहा हूं। मैं एंड्रॉइड ढांचे के लिए वसंत का उपयोग कर रहा हूँ। और अधिक विशिष्टमेमोरी लीक, एंड्रॉइड के लिए वसंत
RestTemplate.exchange();
फ्लाई बाध्यकारी बनाने के लिए। हालांकि, जब मैं एक स्मृति विश्लेषण करता हूं तो मुझे निम्न मिलता है:
1.628 "com.products.Product" के उदाहरण, "dalvik.system.PathClassLoader @ 0x43692b80" द्वारा लोड किया गया 1.363.064 (22,20%) बाइट्स पर कब्जा । इन उदाहरणों को "java.lang.Object []" के एक उदाहरण से संदर्भित किया गया है, जो "" द्वारा लोड किया गया है। डोमिनेटर पेड़ निम्नलिखित है:
कक्षा com.products.ProductList @ 0x436d7ea8 सिस्टम क्लास | 1.628 | 8 | 130.240 | 8
mFilteredProducts java.util.ArrayList @ 0x43a4eab0 | 1.628 | 24 | 130.240 | 6,552
सरणी 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
........
ऊपर एक dominator पेड़ है। हालांकि मैं सोच रहा था कि कचरा कलेक्टर को सक्रिय करने का एक सुरक्षित तरीका है या नहीं।
System.gc();
सुरक्षित? हालांकि, क्या इस स्मृति रिसाव को रोकने का कोई तरीका है? कक्षा com.products.Product एक साधारण POJO है जो JSON फ़ील्ड को संबंधित विशेषताओं से जोड़ देगा। आम तौर पर POJO कि JSON बाध्य करने के लिए प्रयोग किया जाता है निम्नलिखित है:
@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
}