0
点赞
收藏
分享

微信扫一扫

如何获取Java中的当前堆栈跟踪?

独西楼Q 2022-10-22 阅读 110


“如何获取Java中的当前堆栈跟踪?

我如何在Java中获取当前的堆栈跟踪,就像在.NET中可以做到的那样Environment.StackTrace?

我找到了,Thread.dumpStack()但这不是我想要的-我想找回堆栈跟踪信息,而不是打印出来。

高分回答:

您可以使用Thread.currentThread().getStackTrace()。

这将返回一个StackTraceElements数组,该数组代表程序的当前堆栈跟踪。

高分回答:

Thread.currentThread().getStackTrace();

如果您不在乎堆栈的第一个元素,那就很好了。

new Throwable().getStackTrace();

如果重要的话,将为您当前的方法定义位置。

高分回答:

.currentThread().getStackTrace();

从JDK1.5开始可用。

对于较旧的版本,您可以重定向exception.printStackTrace()到StringWriter():

StringWriter sw = new StringWriter();
new Throwable("").printStackTrace(new PrintWriter(sw));
String stackTrace = sw.toString();


作者建议:我在出现内存溢出或者内存泄漏时会关心我的堆栈信息,如果在windows直接可以打开bin文件下的jvisualvm,如果在linux可以通过jmap来看占用最多的堆,jstack查看线程的堆栈信息,也可以使用阿尔萨斯来分析。

如何获取Java中的当前堆栈跟踪?_数组_02

真心感谢帅逼靓女们能看到这里,如果这个文章写得还不错,觉得有点东西的话


举报

相关推荐

0 条评论