6

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

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

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

4

3 回答 3

2

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

UPD:答案为“否”的原因之一是这样一个事实,即如果可能,那么必须存在对所有已创建对象的引用列表。但在这种情况下,Java GC 根本不起作用。

于 2013-01-15T12:20:49.880 回答
0

你可以试试housemd。它由工程师@alibaba 开发,即使在生产环境中也可以安全使用,例如 taobao.com。

其特点包括:

Display object field value
Output invocation stack trace

以下是示例屏幕截图: 在此处输入图像描述

于 2013-01-15T14:12:18.293 回答
0

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

于 2013-01-15T14:31:09.430 回答