如何在 Eclipse Memory Analyzer Tool 中使用 oql 求和@retainedHeapSize

2022-09-02 13:12:45

你有没有使用过ECLIPSE中的MAT(内存分析工具)。这真的很酷。(1.5G堆转储文件 kill jhat,IBM的堆转储分析器与OOME)。MAT是活生生的,快速的,美丽的,强大的。

我想知道ehcahce密钥的内存大小是多少,所以在下面写oql。

SELECT c.key.@retainedHeapSize 
FROM net.sf.ehcache.store.compound.HashEntry c 

不幸的是,像 sum()、max()、 min() 这样的群函数并不存在。我将总结果行(约60,000)导出到excel文件中,并在excel工作表中求和。

你有关于使用组函数(如sum())的提示或hidden(?)函数/特性吗?


答案 1

您可以从 OQL 结果生成直方图 - 选择“显示为直方图”图标。从此直方图中,您可以使用“计算精确保留集”图标计算保留大小。


答案 2

据我所知,从内存分析器文档中可以看出,它的OQL中没有聚合函数。

但是,在 VisualVm 中(自 1.6 起包含在 JDK 中,可作为独立应用程序下载),您可以按如下方式操作:

select sum(heap.objects('net.sf.ehcache.store.compound.HashEntry'), 'rsizeof(it)')

或者,如果您想要浅大小而不是保留的大小 - 将“rsizeof”更改为“sizeof”:

select sum(heap.objects('net.sf.ehcache.store.compound.HashEntry'), 'sizeof(it)')

推荐