Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在尝试使用 JVisualVM 查看我的应用程序活动对象及其相应的内存计数(可能在包级别)
使用 jstad 连接时如何实现相同的效果
谢谢
VisualVM 绝对支持通过堆转储查看和检查实时对象,以及实时采样分配。
对于堆转储,右键单击进程,选择堆转储。
这将打开堆转储视图。在摘要页面上,您可以按保留大小计算最大的 n 个对象,然后单击进入各种视图。
它提供了与上面建议的使用 jmap 和 mat 基本相同的功能,但工作流程和可用性要好得多。
我很确定你不能对正在运行的进程使用 VisualVM 来做到这一点。您需要做的是使用jmap进行堆转储(例如 jmap -dump:format=b,file=heapdump.bin),然后使用mat之类的工具来分析该转储。
请注意,堆转储会在相当长的时间内阻塞您的进程,尤其是在您有大堆的情况下。
要获得更一般级别的信息,您还可以对您的进程运行 jmap -histo:live 以查看每种类型的对象数量及其足迹。