获取Java堆栈跟踪中涉及的对象

时间:2013-01-15 12:16:01

标签: java stack-trace callstack

我可以使用Thread.currentThread().getStackTrace()检索当前的堆栈跟踪,但这只给出了调用中涉及的类。是否可以检索调用跟踪中涉及的对象实例?也许某种类型的库允许我从堆中检索对象?

我有一个问题,需要我追溯到一个Spring bean,它间接创建了我正在请求堆栈跟踪的对象。

更新 如果在Java中没有内置工具,我正在搜索可以在运行时为我执行此操作的嵌入式库。

3 个答案:

答案 0 :(得分:2)

这是一个非常有趣的想法,但不幸的是,整个没有,你不能,这是不可能的。

UPD:答案之一是" no"事实上,如果可能的话,那么必须存在一些对所有已创建对象的引用列表。但在这种情况下,Java GC根本不起作用。

答案 1 :(得分:0)

您可以尝试housemd。它由工程师@阿里巴巴开发,即使在生产环境中也可安全使用,例如: taobao.com。

其功能包括:

Display object field value
Output invocation stack trace

以下是一个示例屏幕截图: enter image description here

答案 2 :(得分:0)

尝试使用Eclipse调试器以查看特定方法中使用的对象的值。在您要暂停程序的行上放置断点。