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

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

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

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

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

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

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

其function包括:

 Display object field value Output invocation stack trace 

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

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