簡體   English   中英

這些代碼會導致Java中的內存泄漏嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM