我有一个使用-Xmx2g
运行得非常愉快的程序。使用 -Xmx1g
,它会逐渐停止。它永远不会出现内存不足的异常——或者,至少,我从来没有耐心等待足够长的时间。
这表明总占用空间确实适合 1g,但 GC 对可能耗尽空间有些担忧。
内存占用是一些大的、稳定的、具有大量临时流量的项目的组合。
是否有任何或多或少模糊的 GC 选项与这种情况相关?
最佳答案
您可以在 JVM 上使用 http://java.sun.com/docs/hotspot/gc5.0/gc_tuning_5.html 设置一堆垃圾回收选项。 .当一个应用程序由于 GC 而停止时,您通常会看到很多主要的收集,这可能会在收集时停止一切。您可以调整 minor 和 major 收集参数,看看是否可以进行更频繁的次要收集。
我建议使用 VisualVM(随 JDK6 提供,我相信更新 7+)等工具查看堆中的内容,并分析对象图。另请查看用于分析 hprof 文件的工具 (How do I analyze a .hprof file?)。
关于java - 让兴奋的垃圾收集器平静下来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2277633/