导航:首页 > 编程大全 > javadump分析工具

javadump分析工具

发布时间:2024-07-22 08:10:49

㈠ 如何查看javacore和heapmp文件

查看javacore文件
1.下载ThreadDumpAnalyser,graphviz,svgviewer

2.运行runall.bat javacore.txt,会产生三个文件mps.xml,locktree1.svg,sidebyside.html
二。查看heapmp文件
1.从IBM网站下载ha433包,释放,执行ha433.jar文件

2.在ha433窗口打开heapmp.phd,从中会显示分析结果

㈡ 如何通过mat从java内存mp中找到缓存对象中的所有字符串

生成java内存mp文件

标准做法,jmap mp,需要sudo权限,另外jmap指定的mp文件一定要是启动服务的用户可写,比如可以新创建一个文件夹

sudo mkdir /home/q/memmp
sudo chown resin:resin /home/q/memmp

sudo -u resin /home/q/java/default/bin/jmap -mp:live,format=b,file=/home/q/memmp/memMap.20130527.hprof ${pid}

把mp文件拿到本地

把mp文件压缩下,否则会很大,scp到本地

安装mat

直接在eclipse里:

1.Help->Install New Software

2.输入update site: http://download.eclipse.org/mat/1.2/update-site/,然后一直next就行了,安装完重启eclipse

3.最好创建一个单独的workspace来放内存mp文件

把mp文件导入mat

1.打开eclipse,选择上一步你创建的存放内存mp文件的workspace,我本机上是~/mat
2.打开刚才拿到本地的mp文件,然后等着mat解析就完了,注意这时候你可能需要修改eclipse安装文件下的eclipse.ini,调整下eclipse的jvm参数(xms和xmx),把heap调大些,否则解析过程会报OOM

3.解析完后会生成一个Overview,我们一般会选择org.apache.catalina.loader.WebappClassLoader,作为分析top
consumer的切入点,这是tomcat上web应用的classloader

4.单击饼图上org.apache.catalina.loader.WebappClassLoader的区域,会出现一个弹出菜单,选择List
Objects->with incoming references,因为所有的web应用内的对象都会引用它们自己的class
loader,也就是org.apache.catalina.loader.WebappClassLoader
5.得到如下所示列表,单击retained heap这个tab标签可以排序,选择按照占用内存的大小倒排序,得到了top memory
consumers列表

定位缓存对象

我们关心的是top consumer里的RtTreeCache里,有多少重复房型,怎么得到的呢,follow the steps:

1.查看RtTreeCache对象的outgoing
reference,因为我们需要看这个对象里面的属性,属性对象也就是RtTreeCache对象引用的对象,也就是outgoing reference

2.找到我们需要分析的数据在对象结构中的位置

3.可以看到我们要查找的目标是RtTreeCache对象下的所有HotelRtTree对象的rtReverseMap对象属性下的table数组内所有entry的key,我们接下来就看看怎么把这个冗长的关系转化成一个简单的OQL语句

写MAT OQL

OQL是MAT里的一个内嵌查询语言,它的官方描述很形象:
Memory Analyzer has a built-in object query
language (OQL) that allows to query the heap mp with custom SQL-like queries. Just
think of classes as tables, objects as rows, and fields as columns.

总结

jmap + mat是我们分析java内存的利器,而通过mat
oql,我们可以从mp文件里提取出更多的类似于有多少内容相同的不同字符串对象等信息来帮助我们做技术决策。

㈢ Linux里面什么是mp线程

线程mp是非常有用的诊断java应用问题的工具,每一个java虚拟机都有及时生成显示所有线程在某一点状态的线程mp能力。虽然每个java虚拟机线程mp打印输出格式上略微有一些不同,但是线程mp的信息包含线程基本信息、线程的运行状态、标识、调用的堆栈;调用的堆栈包含完整的类名,所执行的方法,如果可能的话还有源代码的行数。

㈣ 什么是java mp文件 怎么生成

java mp heap 是分配给实例类和数组对象运行数据区,所有java线程在运行期间共享heap中的数据。Java heap mp相当于java应用在运行的时候在某个时间点上打了个快照(snapshot)。
有java mp文件生成的方式如下:
1.使用$JAVA_HOME/bin/jmap -mp来触发,eg:jmap -mp:format=b,file=/home/longhao/heammp.out
2.使用$JAVA_HOME/bin/jcosole中的MBean,到MBean>com.sun.management>HotSpotDiagnostic>操作>mpHeap中,点击 mpHeap按钮。生成的mp文件在java应用的根目录下面。
3.在应用启动时配置相关的参数 -XX:+HeapDumpOnOutOfMemoryError,当应用抛出OutOfMemoryError时生成mp文件。
4.使用hprof。启动虚拟机加入-Xrunhprof:head=site,会生成java.hprof.txt文件。该配置会导致jvm运行非常的慢,不适合生产环境。

㈤ 浣跨敤jdk甯哥敤宸ュ叿鎺掓煡鏁呴殰娴佺▼

jps瀹氫綅杩涚▼
jstat缁熻″爢淇℃伅
jstack瀹氫綅闂棰樼嚎绋
jmap瀹氫綅闂棰樺硅薄

jps鐢ㄤ簬鏌ョ湅鏈嶅姟鍣ㄥ綋鍓嶆湁鍝浜沯ava杩涚▼锛屾帓鏌ラ棶棰樻椂锛屼竴鑸鍏堜娇鐢╦ps瀹氫綅鍒皃id
-l鍙傛暟鍙浠ユ墦鍗板畬鏁寸被璺寰勬垨jar鍖呰矾寰勶紝-v鍙傛暟鍙浠ユ墦鍗板惎鍔ㄥ弬鏁
澶囨敞: ps -ef | grep java 鍙浠ユ墦鍗板惎鍔ㄥ弬鏁板拰jar璺寰勶紝浣嗘墦鍗颁笉浜嗙被璺寰


jstat鐢ㄤ簬缁熻″爢鍚勫尯鍩熺殑浣跨敤鎯呭喌绛変俊鎭

涓嬪浘涓锛 jstat -gc 1 1000 5 鍛戒护琛ㄧず姣1000ms鎵撳嵃涓娆pid涓1鐨勮繘绋嬬殑鍫嗙殑淇℃伅锛屽叡鎵撳嵃5娆°
S0C琛ㄧずS0鐨刢apacity锛屽嵆鎬诲归噺锛孲0U琛ㄧずS0鐨剈sed锛屽嵆宸蹭娇鐢ㄧ┖闂达紝鍗曚綅涓簁b锛孶/C鍙浠ュ緱鍒颁娇鐢ㄧ巼锛屽侻U/MC = 鍏冪┖闂翠娇鐢ㄧ巼銆
E銆丱銆丮鍒嗗埆琛ㄧずEden鍖恒佽佸勾浠c佸厓绌洪棿锛孻GC/YGCT琛ㄧずYGC鐨凣C娆℃暟/GC鏃堕棿锛孎GC/FGCT琛ㄧずFGC鐨凣C娆℃暟/GC鏃堕棿銆

-gc鍙傛暟鏄剧ず鍏蜂綋鏁板硷紝-gcutil灞曠ず姣斾緥


jstack鐢ㄤ簬鏌ョ湅鏌愪釜杩涚▼鍐呯殑绾跨▼淇℃伅锛屽父鐢ㄤ簬鎺掓煡cpu闂棰

浣跨敤jstack鏃讹紝涓鑸姝ラゅ備笅
姝ラ1锛岀敤 top -Hp pid 鏌ョ湅pid杩涚▼鍐呯殑绾跨▼鐨刢pu鍗犳瘮锛屾寜cpu浣跨敤鐜囦粠澶у埌灏忔帓搴忋
鏈姝ラら渶瑕佺潃閲嶈傚療鐨勬槸: cpu鍗犳瘮杈冮珮鐨勭嚎绋嬶紝浠ュ強cpu杩愯屾椂闂达紙鍗砊IME+鍒楋級杈冮暱鐨勭嚎绋

杩欓噷鏈変竴涓闂棰橈紝cpu澶氶珮绠楅珮锛
鍋囪炬湁涓涓4鏍哥殑cpu锛屼竴涓鏍歌窇婊℃槸100%锛屾暣涓猚pu鏈楂樿窇鍒400%銆
濡傛灉鏈変竴涓绾跨▼姝诲惊鐜锛坵hile true锛夛紝cpu涓鑸鑳藉埌90%+锛屽埌涓嶄簡100%鏄鍥犱负鍗充娇鏄痺hile true锛岃繕鏄浼氭湁鏃堕棿鐗囪疆杞銆

鍙﹀栵紝cpu杩愯屾椂闂翠篃鏄涓涓寰堥噸瑕佺殑鎸囨爣锛屼笂鍥句腑锛宲id涓71鐨勭嚎绋嬶紝璺戜簡2灏忔椂18鍒嗛挓锛岃偗瀹氭湁闂棰樸

姝ラ2锛屾妸褰撳墠绾跨▼淇℃伅瀵煎嚭thread mp鏂囦欢

姝ラ3锛屾牴鎹涓婁竴姝ユ壘鍒扮殑闂棰樼嚎绋嬬殑pid锛屾妸pid杞鎴16杩涘埗锛屽洜涓簍hread mp鏂囦欢涓锛岀嚎绋媝id鏄鐢16杩涘埗琛ㄧず鐨

姝ラ4锛屽湪thread mp鏂囦欢涓妫绱涓婁竴姝ョ畻鍑虹殑绾跨▼pid鐨16杩涘埗锛屼竴鑸鐪嬪悗20琛岋紝鑳界湅鍒板畬鏁磋皟鐢ㄦ爤鍗冲彲

鍙浠ョ湅鍒帮紝璇ョ嚎绋嬫槸kafka娑堣垂鑰呯嚎绋

娉ㄦ剰: 寮鍙戞椂锛岀嚎绋嬪悕涓瀹氳佸畾濂斤紝鑳藉瑰簲鍏蜂綋涓氬姟锛岃繖鏍风敤jstack鐨勬椂鍊欙紝鍙浠ユ牴鎹绾跨▼鍚嶉┈涓婂畾浣嶅埌鍏蜂綋涓氬姟銆

鍙﹀栵紝Thread绫荤殑getAllStackTraces鏂规硶鍙浠ヨ幏鍙栧綋鍓嶈櫄鎷熸満鎵鏈夌嚎绋嬬殑璋冪敤鏍堬紝濡傛灉寮鍙戜汉鍛樹笉鏂逛究涓婄敓浜э紝鍙浠ョ敤璇api鏆撮湶鎺ュ彛銆


jmap鐢ㄤ簬鏌ョ湅鏌愪釜杩涚▼鐨勫硅薄淇℃伅锛屽父鐢ㄤ簬鎺掓煡鍐呭瓨闂棰

jmap -mp:live,format=b,file=/root/1.hprof 1 鎶婂爢鐨勫唴瀹规墦鍗板埌鏂囦欢锛宭ive鍙傛暟琛ㄧず鍙杈撳嚭娲荤殑瀵硅薄銆
澶囨敞锛
heap mp鏂囦欢鐨勫ぇ灏忎笌褰撳墠鍫嗕娇鐢ㄩ噺鐨勫ぇ灏忎竴鑷达紝鍋囧傚爢浣跨敤閲忎负2G锛宧eap mp鏂囦欢灏辨湁2G锛屽煎嚭heap mp鏂囦欢闇瑕佸緢闀跨殑鏃堕棿锛屽煎嚭杩囩▼鍙鑳戒細褰卞搷瀵瑰栨湇鍔°
鍙﹀栵紝heap mp鏂囦欢鍙鏈夌敤涓撲笟鐨勫伐鍏凤紙濡俲hat銆乯visualvm銆乵at锛夋墠鑳界湅锛屾棤娉曠敤grep绛夊懡浠ゆ绱銆
缁间笂锛屼竴鑸寰堝皯鍦ㄧ敓浜х幆澧冧娇鐢ㄨュ懡浠ゃ

jmap -histo:live pid 缁熻$被瀹炰緥鏁颁互鍙婂瓧鑺傛暟銆
涓鑸鐢 jmap -histo:live pid | grep packge 妫鏌ユ槸鍚﹀唴瀛樻硠婕忥紝page涓簀ava椤圭洰鐨勫寘鍚

jmap -J-D64 -heap 1 鎵撳嵃heap鐨勬傝佷俊鎭


鎸変笂闈㈢殑姝ラわ紝涓鑸鍙浠ュ畾浣嶅埌闂棰橈紝浣嗘槸姣旇緝鍥伴毦锛岄渶瑕佸湪鐭鏃堕棿鍐呭仛澶ч噺鎿嶄綔锛屽洜姝わ紝鎺ㄨ崘浣跨敤 闃块噷鐨刟rthas 銆

阅读全文

与javadump分析工具相关的资料

热点内容
怎么看手机上所有的app 浏览:794
惠州企业网站优化公司如何 浏览:155
iphone5铃声同步后找不到 浏览:245
苹果手机同步通话记录 浏览:877
win10联想自带ie卸载 浏览:309
linux将文件切换用户归属 浏览:158
数据线pd20什么意思 浏览:890
小米盒版本 浏览:582
iphone6更新到诊断 浏览:717
16年上线的外包app 浏览:234
男人团网站为什么进不去了 浏览:122
数据填报在企业微信哪里 浏览:365
linux清除安装包 浏览:20
开源linux飞控 浏览:913
单片机语音播报程序 浏览:151
字体文件夹修复工具栏 浏览:683
淘宝数据复制软件有哪些 浏览:319
编程SETBTR0什么意思 浏览:571
javahttp多文件上传 浏览:854
msi安装程序被中断 浏览:12

友情链接