GC - YUHAO-ZX/StudyCollection GitHub Wiki

1.理论

原理工具使用

2.工具

jstat

1.查看各内存区使用占比和gc次数,时间
==》》
命令:jstat -gcutil PID 2000(刷新间隔时间)

2.jstat -gc PID 2000(刷新间隔时间)
说明:结果S0C,S1C  表示改servior区的容量,单位KB

jmap

1.查看内存中对象数目:./jmap -histo -F PID
2.dump内存:jmap -dump:format=b,file=文件名 [pid]

jstack

查看线程状态:./jstack -F PID
可能会有用户权限限制:需要ps -ef |grep tomcat 查看进程用户,然后sudo -u 用户名 jstack PID

Jprofile

1.UI工具,全面监控虚拟机状态
2.需要在服务器上进行配置并启动

3.启动参数

4.相关参考

jstat说明

垃圾回收算法

http://www.tuicool.com/articles/jq2yIza
http://blog.takipi.com/garbage-collectors-serial-vs-parallel-vs-cms-vs-the-g1-and-whats-new-in-java-8/

!FULL GC 一定会stop the world
!Perm永久代空间不足会触发Full GC,可以让CMS清理永久代的空间。设置CMSClassUnloadingEnabled即可
!
-XX:+UseParNewGC 
指定在 New Generation 使用 parallel collector, 是 UseParallelGC 的 gc 的升级版本 , 有更好的性能或者优点 , 可以和 CMS gc 一起使用

1.The Serial Collector  单线程清理,慢
2.The Parallel / Throughput collector  YGC 会STW 多线程清理
3.CMS      YGC不回STW   标记清理
4.G1(JDK8)