JVM内存诊断_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > JVM内存诊断

JVM内存诊断

 2018/10/30 12:18:43  henu_zhangyang  程序员俱乐部  我要评论(0)
  • 摘要:内存泄漏诊断步骤:1.查看各个代的内存使用情况jmap-heappid2.查看jvm中对象的实例个数(找出占用内存较大的异常对象)jmap-histopid3.查看jvm中线程个数,是否有没被回收的线程jstackpid4.通过dumap出内存数据,使用MAT进行分析jmap-heappid查看Java堆(heap)使用情况jmap-histopid查看堆内存(histogram)中的对象数量,大小jmap-histo:livepid这个命令执行,JVM会先触发gc,然后再统计信息。jstat
  • 标签:JVM 内存

?

内存泄漏诊断步骤:

1.查看各个代的内存使用情况? ?jmap -heap pid

2.查看jvm中对象的实例个数(找出占用内存较大的异常对象)? jmap -histo pid

3.查看jvm中线程个数,是否有没被回收的线程? jstack pid

4.通过dumap出内存数据,使用MAT进行分析

?

?

?

jmap -heap pid

查看Java 堆(heap)使用情况

?

jmap -histo pid

?查看堆内存(histogram)中的对象数量,大小

?

?

jmap -histo:live pid

这个命令执行,JVM会先触发gc,然后再统计信息。

?

jstat -gcutil pid 1000??

#每一秒钟监控打印一次pid的gc情况

jstat命令详解: https://blog.csdn.net/zhaozheng7758/article/details/8623549

?

jstack pid

查看当前jvm进程所有的线程

?

?

jmap -dump:format=b,file=/home/quote/recevier_hk/dump.dat 26333

dump某个程序的内存数据

这个命令执行,JVM会将整个heap的信息dump写入到一个文件,heap如果比较大的话,就会导致这个过程比较耗时,

并且执行的过程中为了保证dump的信息是可靠的,所以会暂停应用。

?

?

#调查java进程中的线程数、以及都是什么线程

1.查看线程数: ps -Lf pid | wc -l? ? 或者是top -H -p pid (查看某个进程的信息,包含线程数)

2.通过top -H -p 命令查看各个线程使用资源的情况,并找出线程id

?

?

?

MAT(linux)分析内存步骤:

1.通过jmap -dump 将运行的java进程的内存数据dump出来

2.使用MAT for linux 的工具将第一步dump出来的文件分析。

具体执行命令:?

class="java">sh ParseHeapDump.sh /home/quote/heap-Analyzer/sdata-dump.dump org.eclipse.mat.api:suspects org.eclipse.mat.api:overview org.eclipse.mat.api:top_components

?

3.通过第二步分析会产生几个html的页面结果

?

案例:https://www.cnblogs.com/liangzs/p/8489321.html

MAT下载:http://www.eclipse.org/mat/downloads.php

?

?

Shallow heap & Retained heap:? http://bjyzxxds.iteye.com/blog/1532937

?

?

?

?

上一篇: 使用PHP生成以太坊钱包和密钥对 下一篇: 没有下一篇了!
发表评论
用户名: 匿名