JVM之其他情况
JVM优化时遇到的场景
场景一
一些应用分配了一些少量的非常大的长时间存活的对象。这样的场景需要需要young代的空间比old代更大。
场景二
一些应用会经历很少的对象转移。这样的场景可能需要old代的空间远远大于存活对象的大小,由于old的占用量增长率很小。
扫描二维码关注公众号,回复:
516318 查看本文章
场景三
一些应用有小延迟需求,会使用CMS垃圾回收器,而且使用小young代空间(以致于MinorGC时间更短),以及大的old代空间。在这种配置下,对象会快速的从young代移动到old代,替代了高效老化对象。另外,CMS垃圾回收移动后的对象,碎片的可能性通过大的old代空间来解决。
场景四
大量临时对象,这时应该用更大的年轻代,更小的老年代;大新生代延长普通GC的周期,但增加每次GC的时间,小的老年代,会导致更频繁的Full GC。
场景五
大量持久对象,这时应该用更小的年轻代,更大的老年代;小的新生代导致GC频繁,但每次GC的时间减少了,大的老年代减少了GC的频率。
调节经验
- 本着Full GC尽量少的原则,让老年代尽量缓存重用对象,JVM 1:2
- 观察一段时间,看它在峰值时,老年代会占用多少内存,在不影响GC的前提下,根据实际情况加大新生代,比如加大到 1:1,但给老年代至少预留三分之一的增长空间。
参考:
http://blog.csdn.net/zhoutao198712/article/details/7842659