查看一波电脑中的java版本
>>java -version
java version "1.8.0_91"
Java(TM) SE Runtime Environment (build 1.8.0_91-b15)
Java HotSpot(TM) 64-Bit Server VM (build 25.91-b15, mixed mode)
可以看到版本是java1.8版本
>>java -XX:+PrintCommandLineFlags -version
-XX:InitialHeapSize=266044224 -XX:MaxHeapSize=4256707584 -XX:+PrintCommandLineFlags -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:-UseLargePagesIndividualAllocation -XX:+UseParallelGC
java version "1.8.0_91"
Java(TM) SE Runtime Environment (build 1.8.0_91-b15)
Java HotSpot(TM) 64-Bit Server VM (build 25.91-b15, mixed mode)
查看jvm参数,可以发现UseParallelGC,通过《深入理解java虚拟机》这本书可以发现
默认应该是parallel Scavenge +Serial old。
查一波是不是和书上描述的一致。
>>java -XX:+PrintGCDetails -version
java version "1.8.0_91"
Java(TM) SE Runtime Environment (build 1.8.0_91-b15)
Java HotSpot(TM) 64-Bit Server VM (build 25.91-b15, mixed mode)
Heap
PSYoungGen total 75776K, used 2601K [0x000000076b700000, 0x0000000770b80000, 0x00000007c0000000)
eden space 65024K, 4% used [0x000000076b700000,0x000000076b98a558,0x000000076f680000)
from space 10752K, 0% used [0x0000000770100000,0x0000000770100000,0x0000000770b80000)
to space 10752K, 0% used [0x000000076f680000,0x000000076f680000,0x0000000770100000)
ParOldGen total 173568K, used 0K [0x00000006c2400000, 0x00000006ccd80000, 0x000000076b700000)
object space 173568K, 0% used [0x00000006c2400000,0x00000006c2400000,0x00000006ccd80000)
Metaspace used 2318K, capacity 4480K, committed 4480K, reserved 1056768K
class space used 261K, capacity 384K, committed 384K, reserved 1048576K
实际上的垃圾收集器应该是Parallel Scavenge + Parallel Old。和书上的表述并不相符。
原因很简单。
Serial Old是一个单线程收集器,早就已经不适用于现在的环境,也就是说实际上,jvm会默认选择Parallel Old作为老年代的收集器。