近期的JVM有许多垃圾回收的XX参数(例如参见此处),但是哪些选项能使客户端Swing应用程序表现更好呢?
我应该注意到,客户端Java应用程序中真正令我恼火的事情之一就是停止整个垃圾回收所需的大量延迟。在Intelli-J IDEA中,我曾经看到它需要三分钟甚至更长时间。
编辑:感谢所有的回复。只是为了报告一下,我启用了CMS垃圾回收器,使用了这里建议的设置,这是一个很好的公共参考,大多数人都熟悉这种类型的应用程序。我还设置了-XX:+StringCache,以查看它是否能减少内存需求。
通常观察发现,使用字符串缓存选项不会明显降低正常运行性能。然而,内存的减少是巨大的。但是CMS方法不够彻底,需要一次停顿垃圾回收周期(返回到三分钟等待),以清除内存(在一个运行中达到了400MB)。
然而,鉴于内存占用减少,我可能只需要设置较小的最大内存量,这将使停顿垃圾回收的大小更小。
IDEA 8.1.4带有JDK 1.6.0_12,因此我尚未测试G1。此外,我的机器只有2个核心,因此G1方法无法最大化利用。是时候向老板要求更好的机器了;)。
我应该注意到,客户端Java应用程序中真正令我恼火的事情之一就是停止整个垃圾回收所需的大量延迟。在Intelli-J IDEA中,我曾经看到它需要三分钟甚至更长时间。
编辑:感谢所有的回复。只是为了报告一下,我启用了CMS垃圾回收器,使用了这里建议的设置,这是一个很好的公共参考,大多数人都熟悉这种类型的应用程序。我还设置了-XX:+StringCache,以查看它是否能减少内存需求。
通常观察发现,使用字符串缓存选项不会明显降低正常运行性能。然而,内存的减少是巨大的。但是CMS方法不够彻底,需要一次停顿垃圾回收周期(返回到三分钟等待),以清除内存(在一个运行中达到了400MB)。
然而,鉴于内存占用减少,我可能只需要设置较小的最大内存量,这将使停顿垃圾回收的大小更小。
IDEA 8.1.4带有JDK 1.6.0_12,因此我尚未测试G1。此外,我的机器只有2个核心,因此G1方法无法最大化利用。是时候向老板要求更好的机器了;)。