博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
采集HeapDump、ThreadDump
阅读量:4577 次
发布时间:2019-06-08

本文共 2185 字,大约阅读时间需要 7 分钟。

一、Windows

1、Control + Break

转向服务器的标准输出窗口并按下Control + Break组合键, 之后需要将线程堆栈、内存堆栈信息复制到文件中。

示例还是中的示例:

下面是heap信息:

2、jmap

1、先运行目标程序

2、查看pid

3、用jmap抓取jmap -dump:live,format=b,file=test.bin 9328

3、jstack

 

 4、JVM参数之-XX:+HeapDumpOnOutOfMemoryError(导出内存溢出的堆信息(hprof文件))见

二、UNIX/ Linux

首先查找到服务器的进程号(process id), 然后获取堆栈.

1. ps –ef | grep java

2. kill -3 <pid>

注意一定要谨慎, 一步不慎就可能让服务器进程被杀死!

JVM 自带的工具获取线程堆栈:

JDK自带命令行工具获取PID并做ThreadDump:

1. jps

2.jmap

jmap -dump:live,format=b,file=/home/appdeploy/appTest/test.bin 81301

生成的结果为:

3、jstack

[appdeploy@cnsz22vl2175 appTest]$ jstack 81301 >a.bin

将Thread Dump导入到a.bin文件

详细介绍见

4.使用JVisualVM

Threads 标签页下的ThreadDump按钮.

5、JVM参数之-XX:+HeapDumpOnOutOfMemoryError(导出内存溢出的堆信息(hprof文件))见

6、jvisualVM通过JMX连接远程服务器,再用jvisual导出hprof文件

7、jvisualVM通过jstatd连接远程服务器,再用jvisual导出hprof文件

 

 

 

 

WebLogic 自带的获取 thread dump的工具:

1. webLogic.Admin 工具

a. 打开命令提示符, 通过运行<DOMAIN_HOME>/bin/setDomain.env设置相关类路径

b. 执行下面的命令

java weblogic.Admin -url t3://localhost:7001 -username weblogic -password weblogic1 THREAD_DUMP

注意: Thread Dump 会打印到标准输出, 如nohup日志或者进程窗口.

2. 使用 Admin Console

a. 登录 Admin Console , 点击对应的服务器

b. 点击Server à Monitoring àThreads

c. 点击: Dump Thread Stack 按钮

3. 使用WLST (WebLogic Scripting Tool)

connect(‘weblogic’,'weblogic1’,’t3://localhost:7001’)

cd(‘Servers’)

cd(‘AdminServer’)

threadDump()

disconnect()

exit()

注意: 线程堆栈将会保存在运行wlst的当前目录下.

4. 使用utils.ThreadDumper

用法:

C:\bea\wlserver_10.3\server\lib>java -cp weblogic.jar utils.ThreadDumper

Broadcast Thread dumps disabled: must specify weblogic.debug.dumpThreadAddr and

weblogic.debug.dumpThreadPort

Exception in thread "main" java.lang.IllegalArgumentException: Port out of range

:-1

at java.net.DatagramPacket.setPort(Unknown Source)

at java.net.DatagramPacket.<init>(Unknown Source)

at java.net.DatagramPacket.<init>(Unknown Source)

at utils.ThreadDumper.sendDumpMsg(ThreadDumper.java:124)

at utils.ThreadDumper.main(ThreadDumper.java:145)

5. 如果服务器是作为Windows服务的方式运行, 请运行下列命令:

WL_HOME\bin\beasvc -dump -svcname:service-name

其它一些获取Thread Dump的工具有jrcmd, jrmc(JRockit VM自带) ,Samurai, JProfiler等, 还可通过JMX编程的方式获取, 如JDK自带示例代码:

$JAVA_HOME\demo\management\FullThreadDump

转载于:https://www.cnblogs.com/duanxz/archive/2012/11/04/2753619.html

你可能感兴趣的文章
公共POI导出Excel方法–java
查看>>
次短路——Dijkstra
查看>>
C++ compile issue
查看>>
安卓中的shape
查看>>
站立会议总结08
查看>>
C++ stat判断路径是文件还是目录
查看>>
动态代理
查看>>
ie11下,接受postmessage返回的信息
查看>>
阶段1 语言基础+高级_1-3-Java语言高级_02-继承与多态_第1节 继承_13-Java继承的三个特点...
查看>>
中小企业实施OA的意义
查看>>
es6 数组
查看>>
JS判断是否在微信浏览器打开
查看>>
javascript中typeof和instanceof的区别
查看>>
数据结构-数组1
查看>>
jquery之别踩白块游戏的实现
查看>>
转载Eclipse中Maven WEB工程tomcat项目添加调试
查看>>
caller和callee的解析与使用-型参与实参的访问
查看>>
[转]JavaScript线程运行机制
查看>>
日期时间处理函数收集
查看>>
HDOJ树形DP专题之Anniversary party
查看>>