栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JVM —— 内存泄漏排查及jps、jstat、jstack、jmap、jprofiler的使用

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JVM —— 内存泄漏排查及jps、jstat、jstack、jmap、jprofiler的使用

JVM —— 内存泄漏排查及jps、jstat、jstack、jmap、jprofiler的使用

文章目录
  • JVM —— 内存泄漏排查及jps、jstat、jstack、jmap、jprofiler的使用
    • 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
  • 补充
    Go! jstat —> 

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

Go! JProfiler —> 


总结
  • idea安装一个jprofiler插件,开发过程中可以通过jprofiler启动,随时查看自己内存信息;
  • 生产中加入启动项,设置当发生OOM时,将hprof导出到指定位置,然后通过jprofiler分析hprof;
> java -jar -XX:+HeapDumponOutOfMemoryError XX:HeapDumpPath=./heapdump.hprof -jar project.jar
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/684794.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号