我正在研究Java中的內存使用情況,以瞭解爲什麼我的程序會泄漏內存。在我的主while循環中剝離代碼後,我仍然會隨着時間的推移增加內存使用量。思考一個空的程序的內存使用情況:爲什麼空的Java程序會消耗內存?
class Nothing
{ public static void main(String[] args)
{ while(true); }
}
我仍然認爲增加的內存:
所以我的問題是:爲什麼仍鋸齒模式?爲什麼當GC運行時不能保存所有的內存(每次gc運行(谷))時使用的內存增加10-20Kb(與之前的谷相比))?
編輯:
Java版本 「1.6.0_29」
的Java(TM)SE運行時環境(建立1.6.0_29-B11)
的HotSpot的Java(TM)客戶端虛擬機(構建20.4-B02,混合模式,共享)
OS:Windows 7企業-32位
我沒有看到增加。記憶力上升,然後收集下來。它看起來像使用的最大內存隨着時間的推移是不變的。 –
另一個嘗試在應用程序中查找內存泄漏的工具是[Plumbr](http://plumbr.eu)。它應該比摔跤探測器更容易,並試圖從所有這些信息中推斷出某些東西。 – Nikem