我希望能够以与分析UNIX系统上进程的核心转储相同的方式来分析Java核心转储。但是,我对进程中的信息并不感兴趣,只有JVM级别堆栈、堆等。核心转储将包含有关Java方法、变量等的信息。
例如,如果执行此代码
public static void foo() {
//trigger core dump
}
public static void main(String args[]) {
foo();
}我会得到一个核心转储,显示一个main-->foo堆栈
发布于 2010-12-24 04:37:08
这样做的简单方法是将交互式调试器附加到JVM,暂停它,并使用调试器查看堆栈等等。
发布于 2010-12-24 08:24:28
J堆栈
将转储所有正在运行的线程的堆栈跟踪。您需要与运行中的java进程相同的用户。
发布于 2010-12-24 05:17:03
可以使用jmap生成堆转储。
一旦有了堆转储,就可以使用像Eclipse内存分析器工具这样的工具来检查转储。
如果您要寻找的是堆栈跟踪,请尝试类似于Thread.currentThread().getStackTrace()的方法。
https://stackoverflow.com/questions/4524183
复制相似问题