我们做 Java 开发,一项必不可少的技术就是优化虚拟机参数,比如使用什么垃圾收集器,堆内存大小设置、栈内存大小设置、新生代老年代内存比例,GC 最大时间设置诸如此类,算是 java 开发相对高级的技能了。
之前在开发项目的时候,我一直在研究,用什么垃圾收集器,是 parallel 还是 CMS 或者用 G1 ,不同的垃圾收集器对内存有不同的要求,因此运行性能不一样,比如要高吞吐量就用 parallel ,内存小低延迟就用 CMS ,内存大低延时就用 G1 ,ZGC 不能用,因为 jre 版本低,哎,真纠结。
前几天项目要上线,跟运维申请机器,运维直接给一台 64GB 的。卧槽,这么大内存,之前精心研究的设置都白费了,反正内存足够,把堆内存设大一点,用 G1 不就完事了,还研究其他收集器,有个球用。