2013-04-17 48 views
8

請告訴我這些選項的目的。 谷歌上搜索我後認爲: MinHeapFreeRatio道出「的空間中指定最低百分比將確保一個GC後,在堆內存免費」 和 MaxHeapFreeRatio告訴「不超過空間指定的百分比會在堆內存免費後,GC 「[如果有超過指定的百分比的可用內存過剩,這些內存將返回到操作系統]是什麼-XX目的:MinHeapFreeRatio和-XX:MaxHeapFreeRatio

當我試圖用這兩個選項作爲兩個值,即使有超過80個百分比的免費堆內存,它沒有被釋放回操作系統。

詳細說明: 爪哇熱點(TM)64位服務器VM(1.5.0_15-B04,混合模式) ParallelGC(也稱爲吞吐量收集這是在服務器類VM默認集電極) 我指定-Xms50M和-Xmx1000m如JVM參數 操作系統:Windows 7專業(8 GB存儲器64位OS)

注:我只是試圖與SerialGC太,那些最小和最大堆自由比選項被忽略了。

+0

我想這是設置一個百分比的範圍,對吧?不應該都設置爲10,而是設置爲如下值:'MinHeapFreeRatio = 10'和'MaxHeapFreeRatio = 90',希望我正確理解它。 –

回答

2

的Java很少的內存釋放回操作系統。一般來說,應用程序會隨着時間的推移而使用更多的內存,你確定你的記憶太有限了嗎?你確定你正在檢查常駐內存,而不是虛擬內存大小,這將在你的情況下總是大約1.2 GB。

+1

是的,我使用VisualVM檢查了內存使用情況。 我認爲ParallelGC將忽略這些選項,它只是基於「暫停時間」和「吞吐量」目標動態調整年輕和老一代的尺寸。 https://blogs.oracle.com/jonthecollector/entry/it_s_not_magic –

相關問題