JVM —— 内存泄漏排查及jps、jstat、jstack、jmap、jprofiler的使用
文章目录
jps(启动参数查看)
# 找个java
> ps -ef | grep java
501 35512 36218 0 12:07下午 ttys004 0:00.00 grep java
# 吧啦吧啦,这是我的nacos -> PID:36266
501 36266 1 0 171221 ttys004 84:40.39 .....
# 查看启动项方式1
> jinfo -flags 36266
......
......
# 查看启动项方式2
> jps -v | grep 36266
36266 nacos-server.jar -Djava.ext.dirs=/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/jre/lib/ext:/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/lib/ext -Xms512m -Xmx512m -Xmn256m -Dnacos.standalone=true -Dnacos.member.list= -Xloggc:/Users/changyang/tools/nacos-2.0.3/logs/nacos_gc.log -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=100M -Dloader.path=/Users/changyang/tools/nacos-2.0.3/plugins/health,/Users/changyang/tools/nacos-2.0.3/plugins/cmdb -Dnacos.home=/Users/changyang/tools/nacos-2.0.3
jstat(内存分析)
- 分析某进程的情况
# 查看内存使用情况
> jstat -gcutil 36266
S0 S1 E O M CCS YGC YGCT FGC FGCT GCT
0.00 67.90 15.80 42.42 95.45 94.05 123 2.726 3 0.267 2.992
标题 | 解释 |
---|---|
S0 | 新生代中Survivor space 0 区使用空间百分比 新生代堆空间,内存和存放开始都会存在这里 |
S1 | 新生代中Survivor space 1 区使用空间百分比 新生代堆空间,内存和存放开始都会存在这里 |
E | 新生代已使用空间百分比 |
O | 老年代已使用空间百分比 |
M | 元数据区已使用空间百分比 |
CCS | 压缩类空间利用率百分比 |
YGC | 从应用程序启动到当前,发生Yang GC 的次数 |
YGCT | 从应用程序启动到当前,发生Yang GC所用的时间(秒) |
FGC | 从应用程序启动到当前,发生Full GC大的次数 |
FGCT | 从应用程序启动到当前, 发生Full GC所用时间(秒) |
GCT | 从应用程序启动到当前,用于垃圾回收的总时间(秒)约等于YGCT+FGCT |
jstack
- 简介
线程工具
# 查看线程情况
jstack -l 36266
# 会显示当前应用的线程的锁情况
(如果出现锁超时或者出现死锁的情况,在输出的内容中就会打印出锁持有的锁情况,以便排查代码重的错误)
jmap
HeapDump工具,用于查看堆信息,对于JVM调优,需要借助堆信息来进行调优。
# 查看堆信息
> jmap -heap 36266
# 导出堆信息并用jht查看
> jmp -dump:format=b,file=heapDump.hprof pid
> jhat -port 8899 heapDump.hprof
# 然后访问 http://ip:8899即可看到对应的堆信息报告;
jprofiler
总结
- idea安装一个jprofiler插件,开发过程中可以通过jprofiler启动,随时查看自己内存信息;
- 生产中加入启动项,设置当发生OOM时,将hprof导出到指定位置,然后通过jprofiler分析hprof;
> java -jar -XX:+HeapDumpOnOutOfMemoryError XX:HeapDumpPath=./heapdump.hprof -jar project.jar
版权声明:本文为Cy_LightBule原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。