【发布时间】:2015-07-15 04:30:26
【问题描述】:
我正在为我的应用程序使用 GC 选项 XX:+UseParNewGC-XX:+UseConcMarkSweepGC。
正如你们中的大多数人已经体验过的那样,JVM 擅长将堆增加到最大堆大小,但是它不会将内存释放回操作系统。我遇到了-XX:MaxHeapFreeRatio 和-XX:MinHeapFreeRatio,但并行垃圾收集器忽略了这些。
对于-XX:MaxHeapFreeRatio and -XX:MinHeapFreeRatio 组合,是否有强制 JVM 将内存释放回操作系统的特殊选项。
【问题讨论】:
-
嗯.. 即使你找到了这些东西的选项,它们也不能保证跨架构工作。
-
@TheLostMind - 保证
-XX:MaxHeapFreeRatio和-XX:MinHeapFreeRatio在 Oracle 的 64 位 linux JVM 上工作我不太确定上述参数-XX:MaxHeapFreeRatio和-XX:MinHeapFreeRatio是否仅适用于串行垃圾收集器或不是。我发现了相互矛盾的引用。 -
XX:+UseParNewGC 具有最大和最小堆空闲比率至少在我的 Windows 64 位设置中释放内存回 Java 1.8.0_73 及以后的操作系统。但是,如果您没有明确向 GC 请求它,它可能只会在操作系统处于内存压力下时才决定这样做。最后,我不知道 UseConcMarkSweepGC 选项是否改变了这一切。
标签: java garbage-collection jvm-arguments