使用G1收集器时,防止JVM将堆释放回OS

时间:2016-09-06 17:17:06

标签: java garbage-collection jvm g1gc

我想使用最新的G1垃圾收集器但是我遇到了在使用它时遇到内存分配错误的情况。我相信这是因为它将内存释放回操作系统,然后操作系统不允许JVM在请求时将其恢复,因为CMS收集器不会发生这种情况。我运行的特定服务器在CMS收集器上运行良好(除了一些不太理想的GC暂停),一旦我将它移动到G1,它就会在运行大约6个小时后出现这些分配错误并且JVM存在。< / p>

目前尚不清楚G1收集器是否可以防止这种情况发生,但我希望社区中有人能够得到答案。

谢谢!

1 个答案:

答案 0 :(得分:0)

-XX:MaxHeapFreeRatio=100应该防止它缩小堆。

那就是说,如果这实际上修复了jvm崩溃,那将是一个更深层次的问题。机器上有足够的内存来应用程序的所有分配请求,或者没有。如果你让JVM保持贪婪,那么别的东西就会受到影响。