java記憶體洩漏

2021-09-23 14:06:55 字數 462 閱讀 5140

一、長時間存活物件引用了短生命週期物件

// 使用了單例模式

private context context;

this.context = context;

}if (instance != null)

return instance;

}}

這樣不管傳入什麼context最終將使用第一次傳入的context,而單例的生命週期和應用的一樣長;

二、資源未關閉

連線未關閉:資料庫、http

資源檔案未關閉:file.close()

三、靜態物件引用了非靜態物件

static map map = new hashmap();

object o = new object();

map.put("a", o);

四、threadlocal設定了值後未remove掉

java記憶體洩漏

記憶體洩露 memory leak,是指程式在申請記憶體後,無法釋放已申請的記憶體空間,一次記憶體洩露危害可以忽略,但記憶體洩露堆積後果很嚴重,無論多少記憶體,遲早會被占光。memory leak會最終會導致out of memory!以發生的方式來分類,記憶體洩漏可以分為4類 常發性記憶體洩漏。發...

java記憶體洩漏易發場景

記憶體洩露是指無用物件 不再使用的物件 持續占有記憶體 無用物件的記憶體得不到及時釋放 容易發生記憶體洩漏的場景 1.靜態集合類引起記憶體洩露,像hashmap這些靜態變數的生命週期和應用程式一致,他們所引用的所有的物件object也不能被釋放,因為他們也將一直被vector等引用著。2.當集合裡面...

避免Java記憶體洩漏的方法

1 靜態集合類像hashmap vector等的使用最容易出現記憶體洩露,這些靜態變數的生命週期和應用程式一致,所有的物件object也不能被釋放,因為他們也將一直被vector等應用著。2 大量臨時變數的使用,沒有及時將物件設定為null也可能導致記憶體的洩露 3 資料庫的連線沒有關閉情況,包括連...