
说明
1、ThreadDump用于诊断Java应用程序的问题,可用于查找存储器泄漏,发现死锁线程等。
2、该系统可获得线程、线程运行状态、标识、调用等信息,包括完整的类名、执行方法、源代码所在行数等。
特点
可用于各种操作系统;
可以在各种Java应用服务器下使用;
可以在不影响系统性能的情况下使用;
问题可以直接定位在应用程序的代码行上。
实例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | public class JStack {
public static void main(String[] args) throws Exception {
...
String pid = args[optionCount];
String params[];
if (locks) {
params = new String[] { "-l" };
} else {
params = new String[0];
}
runThreadDump(pid, params);
...
}
private static void runThreadDump(String pid, String args[])
throws Exception {
VirtualMachine vm = null ;
try {
vm = VirtualMachine.attach(pid);
} catch (Exception x) {
...
}
InputStream in = ((HotSpotVirtualMachine) vm)
.remoteDataDump((Object[]) args);
byte b[] = new byte[256];
int n;
do {
n = in .read(b);
if (n > 0) {
String s = new String(b, 0, n, "UTF-8" );
System.out.print(s);
}
} while (n > 0);
in .close();
vm.detach();
}
|
以上就是java中Thread Dump的介绍,希望对大家有所帮助。更多Java学习指路:Java基础
本教程操作环境:windows7系统、java10版,DELL G3电脑。