我有这样的问题,jvm 无法及时执行 gc,应用程序卡住。 “解决方案”是使用 jconsole 连接到应用程序并建议 jvm 进行垃圾收集。我不必说这是非常糟糕的应用程序行为。 jvm 是否有一些选项可以建议它更快/更频繁地执行 gc?也许这个问题还有其他一些真正的解决方案?
问题似乎不是内存不足,而是 gc 无法在新数据发送到应用程序之前及时进行收集。之所以如此,是因为 gc 似乎开始收集数据的时间很晚。如果 jconsole 的 System.gc() 按钮足够早地建议,那么问题就不会发生。
年轻代由并行收集器“PS Scavenge”收集。 老年代由并行标记和清除收集器“PS MarkSweep”收集。
最佳答案
您应该检查内存泄漏。 我很确定您不会得到 OutOfMemoryException,除非没有要释放的内存并且没有更多可用内存。
关于Java 无法及时收集垃圾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18717737/