2012-01-23 5 views
0

パブリッククラスProductListGetSet {Eclipse MATはコードにmomoryleakを表示しますが、このコードで何が問題になりますか?

static ArrayList<ProductListItems> productListItems; 
ProductListItems items; 

ProductListGetSet() 
{ 

    productListItems = new ArrayList<ProductListItems>(); 

} 

public static int getProductListCount() { 

    return productListItems.size(); 
} 

public void setProductListItems(String name, String price, String rating, String review) { 

    items = new ProductListItems(); 
    items.productName = name; 

    items.productPrice = price; 
    items.productRating = rating; 
    items.productReview = review; 

    productListItems.add(items); 

} 

public static ArrayList<ProductListItems> getProductListItems() { 

    return productListItems; 

} 

public void setProductListItemsWithoutReview(String name, String price, String rating) { 

    setProductListItems(name, price, rating, "0"); 

} 

public void setProductListItemsWithoutRating(String name, String price, String review) { 

    setProductListItems(name, price, "0", review); 

} 

public void setProductListItemsWithoutRatingReview(String name, String price) { 

    setProductListItems(name, price, "0", "0"); 

} 

public static void removeProductList() 
{ 
    productListItems.clear(); 
} 

}

私は、データベースからレコードを取得し、このclass.Atに私は500件の以上のレコードを保存する時間を節約しています。

これに対応するソリューションはありますか? memmory error()(ビットマップサイズがVMの予算を超えています)から抜け出しています。 私を助けてください!

答えて

0

static変数productListItemsは、コンストラクタProductListGetSetに構築されています。したがって、ProductListGetSetのインスタンスを構築し、setProductListItems()を使用して500個の製品を追加し、別のコードでProductListGetSetを作成すると、別のproductListItemsオブジェクトが作成されます。元のproductListItemsの最初の500人のメンバーがメモリ内にあり、変数の別のコピーを作成しています。

ProductListGetSetの多くのインスタンスをコード内に構築する場合、たとえば、ループで、VMが救助される前に、メモリが不足する可能性があります。

あなたがここに投稿したコードには、おそらく大きなダメージを与える何かがあると感じていますが、

+0

ありがとうございます。サーバーから画像をダウンロードしていて、グリッドビューで表示しています。このアクティビティのメモリは21299です(MemoryInfo info = new MemoryInfo(); info.getTotalPss())。私が戻ってくるときにそれは解放されています – JCJ

+0

最初に私のAppは2.757メガバイトのヒープ[Heop sizeは5.383 MB]を割り当て、ステータスをクラッシュするとHeap sizeは6.195 MB、Allocatedは3.37 MBです。 – JCJ

関連する問題