Java虚拟机参数的配置有时候会对SPL的性能产生很大影响,本文从排序函数sortx的使用出发,探索如何通过优化JVM参数配置来提升性能。对分析过程不感兴趣的同学可以直接阅读结论章节。
1 内存构成
年老代 | 年轻代 |
Eden | |
S1 | |
S2 |
如图,Java虚拟机的内存,也就是常说的堆,主要分为年轻代和年老代两个部分。年轻代存放生命周期很短的对象,年老代存放长期存活的对象。例如,经过几次垃圾回收之后,一个对象仍然存活,那么这个对象就会从年轻代进入年老代。
年轻代又分为3个区:Eden、Survivor 1、Survivor 2(以下简称Eden、S1、S2)。Eden存放新对象,S1和S2交替使用,用来存放垃圾回收时存活的对象。
2 回收策略
Java虚拟机的垃圾回收策略很复杂,这里我们只关心最影响性能的几种情况。
Java的垃圾回收分为两种:Full GC和minor GC,前者是对年老代的回收,一般会很慢,后者是针对年轻代的回收,这个很快。我们调优的目标就是尽量避免频繁的Full GC。那么什么情况会触发Full GC呢?上面说了,新对象会存放在Eden区&#