我想使用最新的G1垃圾收集器但是我遇到了在使用它时遇到内存分配错误的情况。我相信这是因为它将内存释放回操作系统,然后操作系统不允许JVM在请求时将其恢复,因为CMS收集器不会发生这种情况。我运行的特定服务器在CMS收集器上运行良好(除了一些不太理想的GC暂停),一旦我将它移动到G1,它就会在运行大约6个小时后出现这些分配错误并且JVM存在。< / p>
目前尚不清楚G1收集器是否可以防止这种情况发生,但我希望社区中有人能够得到答案。
谢谢!
答案 0 :(得分:0)
-XX:MaxHeapFreeRatio=100
应该防止它缩小堆。
那就是说,如果这实际上修复了jvm崩溃,那将是一个更深层次的问题。机器上有足够的内存来应用程序的所有分配请求,或者没有。如果你让JVM保持贪婪,那么别的东西就会受到影响。