一、问题描述
Tomcat下面部署很多个java项目的war包,tomcat启动一段时间后,发现cpu占用过高,整个界面卡死!
二、通过tasklist命令查看java进程下的线程
三、通过jstack把进程下所以的Java线程栈的内容打印出文本中
四、引出jmap
使用jstack我们能够生成虚拟机当前时刻的线程快照,包含虚拟机中每一个线程正在执行的方法堆栈的集合,用于定位线程出现长时间停顿的原因,如死锁、死循环、外部资源长时间等待等。但是有时候我们需要观察到内存对象实例,此时我们可以使用jmap命令。
四、jmap的作用
Jmap 可以用来查看内存信息,实例个数以及占用内存大小.
jmap -histo[:live] 打印每个class的实例数目,内存占用,类全名信息. VM的内部类名字开头会加上前缀”*”. 如果子参数加上live后,只统计活的对象数量.
五、jmap的使用
1、堆内存dump到指定目录,jmap -dump:b,file=project.hprof pid
2、dump生成的文件可以用jvisualvm命令工具导入该dump文件分析: 打开 jdk 的bin目录的 jvisualvm 工具,选择文件,再选择装入,并选中对应的文件类型,即可进行导入文件,分析内存对象。
如若转载,请注明出处:开源字节 https://sourcebyte.cn/article/188.html
标签:Tomcat,dump,Windows,占用,实例,线程,内存,jmap From: https://blog.51cto.com/sourcebyte/5814233