0

我正在尝试使用 JVisualVM 查看我的应用程序活动对象及其相应的内存计数(可能在包级别)

使用 jstad 连接时如何实现相同的效果

谢谢

4

2 回答 2

5

VisualVM 绝对支持通过堆转储查看和检查实时对象,以及实时采样分配。

对于堆转储,右键单击进程,选择堆转储。

这将打开堆转储视图。在摘要页面上,您可以按保留大小计算最大的 n 个对象,然后单击进入各种视图。

它提供了与上面建议的使用 jmap 和 mat 基本相同的功能,但工作流程和可用性要好得多。

于 2016-09-04T20:49:19.300 回答
4

我很确定你不能对正在运行的进程使用 VisualVM 来做到这一点。您需要做的是使用jmap进行堆转储(例如 jmap -dump:format=b,file=heapdump.bin),然后使用mat之类的工具来分析该转储。

请注意,堆转储会在相当长的时间内阻塞您的进程,尤其是在您有大堆的情况下。

要获得更一般级别的信息,您还可以对您的进程运行 jmap -histo:live 以查看每种类型的对象数量及其足迹。

于 2012-05-25T11:14:49.587 回答