实战Java虚拟机笔记 5-6

串行回收器是指使用单线程进行垃圾回收的回收器。每次回收时,串行回收器只有一个工作线程,对于并行能力较弱的计算机来说,串行回收器的专注性和独占性往往有更好的性能表现。串行回收器可以在新生代和老年代使用,根据作用于不同的堆空间,分为新生代串行回收器和老年代串行回收器。
在串行收集器进行垃圾回收时,java应用程序中的线程都需要暂停,等待垃圾回收的完成。
新生代串行收集器使用复制算法。
老年代串行收集器使用标记压缩算法。
-XX:+UseSerialGC参数可以指定使用新生代串行收集器和老年代串行收集器。当虚拟机在client模式下运行时,它是默认的垃圾收集器。
-XX:+UseParNewGC,新生代使用ParNew收集器,老年代使用串行收集器。
-XX:+UseParallelGC,新生代使用ParallelGC收集器,老年代使用串行收集器。

并行收集器在串行收集器的基础上做了改进,它使用多个线程同时进行垃圾回收。对于并行能力强的计算机,可以有效缩短垃圾回收所需的实际时间。

ParNew收集器是一个工作在新生代的垃圾收集器。它只是简单地将串行回收器多线程化,它的回收策略、算法以及参数和新生代串行收集器一样。
ParNew收集器工作时的线程数量可以全用-XX:ParallelGCThreads参数指定。
-XX:+UseParNewGC,新生代使用ParNew收集器,老年代使用串行收集器。
-XX:+UseConcMarkSweepGC,新生代使用ParNew收集器,老年代使用CMS。

ParallelGC收集器也是一个工作在新生代的垃圾收集器。从表面上看,它和ParNew收集器一样,都是多线程、独占式的收集器。但是ParallelGC收集器有一个重要的特点:它非常关注系统的吞吐量
-XX:+UseParallelGC,新生代使用ParallelGC收集器,老年代使用串行收集器。
-XX:+UseParallelOldGC,新生代使用ParallelGC收集器,老年代使用ParallelOldGC收集器。
-XX:MaxGCPauseMillis,设置最大垃圾收集的停顿时间。
-XX:GCTimeRatio,设置吞吐量大小。
除此以外,ParallelGC收集器与ParNew收集器另一个不同之处在于它还支持一种自适应的GC调节策略:-XX:+UseAdaptiveSizePolicy,可以自动调整新生代大小、eden和survivor的比例、晋升老年代的对象年龄阈值等。

top命令:
可以按下M,P,T 分别按照内存,CPU、CPU时间排序。
vmstat命令:
vmstat 1 3,每1秒采集一次,采集3次。
jps命令:
显示所有java进程名及PID。-v:显示传递给虚拟机的参数,-m:显示程序参数,-l:显示主函数的完整路径。
pidstat:
-p:指定PID, -u:显示CPU,-r:显示内存,-d:显示IO。例如:pidstat -p 1122 -u 1 3,每1秒采集一次,采集3次。

猜你喜欢

转载自blog.csdn.net/sumaoqing123/article/details/82909078
5-6