如何在Eclipse Memory Analyzer Tool中将@retainedHeapSize与oql相加

uui*_*ode 12 java eclipse oql

您是否使用过eclipse的MAT(Memory Analyzer Tool).它真的很酷.(1.5G堆转储文件kill jhat,ibm的堆转储分析器与OOME).MAT活着,快速,美丽,强大.

我想知道ehcahce键的内存大小是多少,所以写下面的oql.

SELECT c.key.@retainedHeapSize 
FROM net.sf.ehcache.store.compound.HashEntry c 
Run Code Online (Sandbox Code Playgroud)

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

你有关于使用组功能的提示或隐藏(?)功能/功能(如sum())吗?

Joh*_*ing 8

据Memory Analyzer文档我所知,它的OQL中没有聚合函数.

但是,在VisualVm(自1.6以来包含在JDK中并可作为独立应用程序下载)中,您可以这样做:

select sum(heap.objects('net.sf.ehcache.store.compound.HashEntry'), 'rsizeof(it)')
Run Code Online (Sandbox Code Playgroud)

或者,如果您想要浅尺寸而不是保留尺寸 - 将"rsizeof"更改为"sizeof":

select sum(heap.objects('net.sf.ehcache.store.compound.HashEntry'), 'sizeof(it)')
Run Code Online (Sandbox Code Playgroud)


小智 6

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