我對我的應用程序使用GC選項XX:+UseParNewGC-XX:+UseConcMarkSweepGC
。如何使JVM釋放內存回到操作系統
由於大多數人已經遇到JVM,因此可以將堆增加到最大堆大小,但是它不會將內存釋放回操作系統。我遇到了-XX:MaxHeapFreeRatio
和-XX:MinHeapFreeRatio
,但這些在並行垃圾收集器中被忽略。
是否有特殊的選項來強制JVM釋放內存返回操作系統的-XX:MaxHeapFreeRatio and -XX:MinHeapFreeRatio
組合。
那麼..即使你找到這些東西的選擇,他們不保證跨體系結構工作。 – TheLostMind
@TheLostMind - 是'-XX:MaxHeapFreeRatio'和'-XX:MinHeapFreeRatio'保證可以在Oracle的64位linux JVM上工作 我不太確定如果上面的參數是'-XX:MaxHeapFreeRatio'和'-XX:MinHeapFreeRatio'僅適用於串行垃圾收集器或不適用。爲此我發現了矛盾的引文。 – Pushkar
XX:+ UseParNewGC與最大和最小堆空閒比率確實釋放內存回操作系統在java 1.8.0_73以上,至少我的Windows 64位安裝。但是,如果您沒有明確向GC提出問題,則可能只會在操作系統受到內存壓力時決定這麼做。最後,我不知道UseConcMarkSweepGC選項是否改變了這一點。 – nsandersen