如何查看JVM的性能参数,发生频繁的FULLGC该如何排查?
性能监控和故障处理是建立在虚拟机数据的基础上的,数据包括:
- 运行日志
- 异常堆栈
- GC日志
- 线程快照(threaddump/javacore文件)
- 堆转储快照(heapdump/hprof文件)等
常用JDK工具:
jps:查看所有的Hotspot虚拟机进程(每运行一个Java程序都会产生一个虚拟机进程)
jstat:虚拟机运行数据
jinfo:配置信息
jmap:生成内存转储快照(headdump)
jhat:分析deaddump文件(使用户可以在浏览器里查看分析结果,但很简陋,所以一般都会用其他更专业的分析工具如eclipse提供的memory analyzer)
jstatck:显示虚拟机的线程快照
一次内存泄漏的排查
服务器频繁出现FullGC,怀疑是内存泄漏
确定当前服务应用的虚拟机进程(使用jps命令查看)
获得进程id后使用jstat命令进行监控,可查看年轻代、老年代占用内存,单位时间内的FullGC次数等
可使用VisualVM工具(一种可视化工具)生成dump文件后用MAT工具查看(此方法比较耗时),也可以使用jmap+jhat命令轻量地查看dump文件快照
网友评论