获取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调试器以查看特定方法中使用的对象的值。 在要暂停程序的行上放置断点。