[英]is these code cause memory leak in java?
ArrayList<Object> list = new ArrayList<Object>();
for (int i = 0; i < 10; i++) {
Object o = new Object();
list.add(o);
}
list = null;
要么
ArrayList<Object> list = new ArrayList<Object>();
for (int i = 0; i < 10; i++) {
Object o = new Object();
list.add(o);
o = null;
}
哪個代碼塊將導致java中的內存泄漏,為什么?
如果兩者都不會導致內存泄漏,那我怎么會導致內存泄漏〜(我想要一些代碼)
我認為上面給出的代碼中沒有發生任何內存泄漏。 即使將s設置為null,“ Array”對象仍然被ArrayList項目引用。 因此,這些字符串對象在循環結束后仍具有活動引用。
通過靜態對象引用,在Java中仍然可能發生內存泄漏。 請參考鏈接 。
兩種情況都不會導致內存泄漏,並且所有對象都將在代碼塊末尾自動釋放。
這兩個示例都沒有內存泄漏。 在Java中,僅僅為了幫助垃圾回收器一點點地設置變量為null是不值得的。
請注意,在某些情況下, 確實需要將對大型對象的長期引用(例如在高速緩存中)設置為null,以避免不受約束的內存增長(泄漏)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.