我正在寻找一种工具,可以提供类似VisuaVM的实时对象分析,但是在非GUI模式下。
我引用的Visual VM功能可以通过转到“Profiler”选项卡并单击“Memory”来访问。
通过为1个对象(所有对象)设置“配置文件对象分配和GC”的配置文件预设。这给了我在自动刷新视图中所需的确切内容,我可以过滤我感兴趣的类。
但是,我希望能够为每个拍摄的快照将“活动对象”表导出到文本文件中(Visual VM每隔一秒刷新一次)。显然,指向和点击不可能是一个解决方案......
任何人都知道这样的“命令行”探查器?
我一直在研究提供堆转储的jmap,但它太昂贵了(转储需要的时间太长,我只对对象的数量感兴趣)。
有一个名为YourKit的商业工具,但我不知道它是否可以做我需要的东西(而且对于我需要它的“一次性”使用类型而言似乎也相当昂贵。)
如果我可以按原样使用VisualVM,但是将输出附加到文件(而不是刷新其GUI),那就完美了......
答案 0 :(得分:2)
我认为班级直方图就是你要找的。您可以定期收集直方图,这将显示每个类的对象数和占用空间。然后,您可以自己解析文本输出,以便:
使用jmap -histo $pid.