客户端最好的垃圾收集设置是什么?

Yis*_*hai 5 java performance garbage-collection jvm

最近的JVM有很多用于垃圾收集的XX参数(例如参见这里),但有哪些选项可以使客户端Swing应用程序真正表现更好?

我应该注意到,在客户端java应用程序中真正让我烦恼的一件事就是停止世界垃圾收集的大延迟.在Intelli-J IDEA中,我看到它需要三分钟或更长时间.

编辑:感谢所有的回复.只是报告回来我使用此处设置的设置,为IDEA提供了CMS垃圾收集器(这是大多数人都熟悉的应用类型的一个很好的通用参考).我还设置-XX:+ StringCache以查看它是否会降低内存需求.

一般来说,观察是常规运行性能不会降低到可以注意到它的程度.存储量减少是巨大的使用String缓存选项,但是CMS方法不彻底,最终需要阻止世界垃圾收集周期(回三分钟的等待),以清除内存(400MB在一次运行).

然而,考虑到内存占用减少,我可能只需要放置一个较小的最大内存量,这样可以使世界各地的大小更小.

IDEA 8.1.4附带JDK 1.6.0_12,所以我还没有测试G1.此外,我的机器只有2个核心,因此G1方法不会真正最大化.是时候打击老板换一台更好的机器了;).

Pas*_*ent 7

这个问题没有一个答案,它取决于您的应用程序正在做什么以及它如何管理它的对象.也许看看垃圾收集如何工作以及并行和并发垃圾收集器来理解各种选项.

然后,检查Java SE 6 HotSpot [tm]虚拟机垃圾收集调整文档,该文档扩展了使用5.0 Java虚拟机文档在Tuning Garbage Collection中引入的Java SE 6的GC调优概念和技术.

如果您希望将垃圾收集暂停时间缩短,则并发收集器可能是正确的方向,因为它同时执行大部分工作(即,在应用程序仍在运行时).但找到最佳设置需要进行分析(考虑测量GC吞吐量,最大和平均暂停时间,完整GC的频率及其持续时间).

(编辑:读过OP的评论后,我认为阅读我对JVM堆调整的建议,让你的手指脱离旋钮!来自性能大师Kirk Pepperdine将是一个好主意.)