我有一个正在运行的Scala进程,并希望在该进程中获取List的内容。我知道进程的PID,并且知道List [String]的名称,并且我已经使用VisualVM进行了堆转储。有没有办法让我找到特定列表的实际内容并将它保存在某个地方?获取正在运行的进程中的scala List的内容?
1
A
回答
4
如果List[String]
实例被类引用(例如通过val
),那么您可以查找包含它的类。
- 你可以下载Eclipse Memory Analyzer (MAT)并打开你的堆转储。
- 然后,您可以点击'Dominator tree',在表格的顶部可以输入保存列表的类的名称。
- 如果您已经找到该类,请右键单击它并选择“列出对象 - >使用传入引用”,这应该为您提供所有可能包含该列表的类的实例。
- 右键单击其中一个实例,然后选择“列出对象 - >即将离任的参考文献”,这应该给你一个树状结构,你会发现你的列表
- 注意,一旦你发现你的列表,你可以检查出(检查员面板),其中包含可读信息。
注意:上述步骤是从我的头顶开始的,因此它们可能不完全准确。但是,这应该给你一个很好的方向感。
祝你好运!
2
我确定原则上它是可能的,但肯定没有什么简单或直接的和现成的允许你这样做。
我可能会使用Java Platform Debugger Architecture (JPDA)及其Java Debugging Wire Protocol (JDWP)来获取您需要的原始信息。从那里您可以使用Java和/或Scala反射来发现要在目标JVM中查询的内容。
我不知道这是多少适用于堆转储。在过去,C/Unix调试工具可以在核心转储或活动进程上运行。
+0
感谢您的帮助和工具的参考,我会报告什么对我有用。 – mrjf 2013-02-18 22:23:58
相关问题
- 1. 获取正在运行的进程分配的内存区域
- 2. 获取正在运行的进程给定的进程句柄
- 3. 如何在Android进程中获取正在运行的线程?
- 4. 如何获取Android中正在运行的应用程序的内容?
- 5. 获取正在运行的metro应用程序的进程ID
- 6. 获取正在运行的进程的在bash输出
- 7. 获取QNX中正在运行的用户进程列表
- 8. WiseScript:获取用户执行一个正在运行的进程
- 9. 获取正在运行的进程的目录路径ID
- 10. Windows:获取正在运行的进程的版本
- 11. 按名称获取正在运行的进程的路径
- 12. 获取有关正在运行的进程的信息
- 13. 获取正在运行的进程的堆栈回溯
- 14. 获取正在运行的进程的progid
- 15. 获取正在运行的进程的列表,并杀死特定的进程
- 16. 获取正在运行的进程列表,获取活动进程(和它的应用程序)的Flex/AIR
- 17. 使用NSWorkspace获取所有正在运行的进程
- 18. 如何获取数据到正在运行的ruby进程?
- 19. Node.js获取所有正在运行的进程
- 20. 使用node.js获取正在运行进程的stdin/stdout
- 21. 获取运行进程的实例
- 22. 如何在C#/ Win32中获取正在运行的进程的DOS路径名?
- 23. 获取在Windows上在Eclipse中运行的Tomcat的进程ID
- 24. Scala可运行的ProGuard进程JAR
- 25. 在Python中获取其他正在运行的进程窗口大小
- 26. 获取运行firefox进程的PID
- 27. 如何获取运行在Win7中的VB3进程的PID?
- 28. 在运行/执行后获取php文件的内容
- 29. 如何获取正在运行的进程的命令行参数
- 30. VBA获取正在运行的进程的程序名称和任务ID
谢谢,我会给你一个机会! – mrjf 2013-02-18 22:23:17
工作!谢谢。 – mrjf 2013-02-19 05:14:57