Java 7已经出现了一段时间了,但我找不到任何关于垃圾收集器配置的好资源,特别是新的G1收集器.
我的问题:
我在Linux 64bit上运行一个具有8个核心CPU和6 GB内存的应用程序服务器.
服务器必须具有高响应性.
经过一番检查后,我发现在服务器上运行的应用程序创建了相当多的短期对象,并且只有大约200~400 MB的长寿命对象(只要没有内存泄漏)
阅读http://java.sun.com/javase/technologies/hotspot/gc/gc_tuning_6.html后, 我使用这些JVM选项
-server -Xms2g -Xmx2g -XX:MaxPermSize=256m -XX:NewRatio=1 -XX:+UseConcMarkSweepGC
Run Code Online (Sandbox Code Playgroud)
结果:次要GC需要0.01~0.02秒,主要GC需要1~3秒,小GC不断发生.
如何进一步改进或调整JVM?
堆大小?但GC需要更多时间吗?
更大的NewSize和MaxNewSize(适合年轻一代)?
其他收藏家?并行GC?
让主要GC更频繁地进行是一个好主意吗?如何?