一、
常见的命令
- 查看jvm内存的大致情况
- jstat -gctuil 1000 -h5 1000 1000
- 查看跑的比较忙线程:
- 看进程的线程信息,显示当前线程的一个cpu等利用率的情况:top -Hp 28340
- 查看线程栈:jstack 28340>temp 其中的线程号为16进制。
- 转化为16机制:printf "%x\n" 28353
- 查看JVm中堆中对象的详细占用情况,输出的内容按照代销排序:
- 导出整个JVM的堆的简要信息:
- jmap -histo 12389 >maplist 或者 jmap -dump:live,format=b,file=heap.bin 32471
- JHat:分析工具,导出整个堆
- jhat -J-Xmx2028M [file] 直到出现 。。。再在浏览器中 打开http://ip:7000访问
- Mat:内存分析工具首先,此分析比较全面,直接到网站下载mat,再运行。File->open file(选在需要分析的文件),后分析 1g文件大致在4m左右。
- 导出整个JVM的堆的简要信息:
- 添加jmx监控,添加到java ops中。
- -Djava.rmi.server.hostname=10.249.196.18
-Dprogram.name=longer
-Dcom.sun.management.jmxremote.port=9999
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
- -Djava.rmi.server.hostname=10.249.196.18
二、注意点
- 如果堆比较大,可以缩小至1g左右分析,推的内容。
- 在linux下,可以开启jmx。在图形化环境下连接下去,用jvisualvm查看,比较直观。