摘要:本文主要向大家介绍了JAVA语言中如何获取本地线程堆栈信息(即 利用JAVA命令模拟jstack),通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。
本文主要向大家介绍了JAVA语言中如何获取本地线程堆栈信息(即 利用JAVA命令模拟jstack),通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。
java虚拟机中获取线程堆栈的信息,可以通过jstck命令:
/**
* 通过java代码 使用jstack查看线程堆栈信息
* created by jintian chen
* 2018/04/21
*/
@Slf4j
public abstract class JstackUtil {
/**
* 获取线程快照信息
*
* @return
*/
public static String getJavaStackTrace() {
StringBuffer msg = new StringBuffer();
for (Map.Entry<thread,> stackTrace : Thread.getAllStackTraces().entrySet()) {
Thread thread = (Thread) stackTrace.getKey();
StackTraceElement[] stack = (StackTraceElement[]) stackTrace.getValue();
if (thread.equals(Thread.currentThread())) {
continue;
}
msg.append("\n 线程:").append(thread.getName()).append("\n");
for (StackTraceElement element : stack) {
msg.append("\t").append(element).append("\n");
}
}
return msg.toString();
}
public static void main(String[] args) {
String msg = JstackUtil.getJavaStackTrace();
log.info(msg);
}
}</thread,>
效果如下:
2018-04-22 23:08:34.285 INFO (JstackUtil.java:38) -
线程:Signal Dispatcher
线程:Finalizer
java.lang.Object.wait(Native Method)
java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:143)
java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:164)
java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:209)
线程:Reference Handler
java.lang.Object.wait(Native Method)
java.lang.Object.wait(Object.java:502)
java.lang.ref.Reference.tryHandlePending(Reference.java:191)
java.lang.ref.Reference$ReferenceHandler.run(Reference.java:153)
Disconnected from the target VM, address: '127.0.0.1:52108', transport: 'socket'
Process finished with exit code 0
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注编程语言JAVA频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号