我有这样的问题,jvm 无法及时执行 gc 并且应用程序冻结。“解决方案”是使用 jconsole 连接到应用程序并建议 jvm 进行垃圾收集。我不必说这是非常糟糕的应用程序行为。jvm是否有一些选项可以建议它更快/更频繁地执行gc?也许这个问题还有其他真正的解决方案?
问题似乎不是内存不足,而是 gc 在新数据发送到应用程序之前无法及时收集。之所以如此,是因为 gc 似乎开始收集数据很晚。如果 jconsole 的 System.gc() 按钮足够早地建议,则不会出现问题。
年轻代由并行收集器“PS Scavenge”收集。老年代由并行标记和扫描收集器“PS MarkSweep”收集。