我有一个正在运行的Scala进程,并希望在该进程中获取List的内容。我知道进程的PID,我知道List [String]的名称,并且我已经使用VisualVM进行了堆转储。有没有办法让我找到该特定列表的实际内容并将其保存在某个地方?
答案 0 :(得分:4)
如果某个类引用List[String]
实例(例如通过val
),则可以查找包含它的类。
注意:上面的步骤来自我的脑海,所以它们可能不完全准确。然而,这应该给你一个良好的方向感。
祝你好运!答案 1 :(得分:2)
我原则上确信这是可能的,但肯定没有什么简单或直接的,现成的,你可以这样做。
我可能会使用Java Platform Debugger Architecture (JPDA)及其Java Debugging Wire Protocol (JDWP)来获取您需要的原始信息。从那里,您可以使用Java和/或Scala反射来发现在目标JVM中查询的内容。
我不知道这有多少适用于堆转储。在过去,C / Unix调试工具可以在核心转储或活动进程上运行。