Java 如何在Eclipse内存分析器工具中将@retainedHeapSize与oql相加
您使用过eclipse中的MAT(内存分析器工具)吗。 这真的很酷。(1.5G堆转储文件kill jhat,ibm的带OOME的堆转储分析器)。 MAT是活生生的、快速的、美丽的、强大的 我想知道ehcahce键的内存大小是多少,所以在下面写oqlJava 如何在Eclipse内存分析器工具中将@retainedHeapSize与oql相加,java,eclipse,oql,Java,Eclipse,Oql,您使用过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
SELECT c.key.@retainedHeapSize
FROM net.sf.ehcache.store.compound.HashEntry c
不幸的是,像sum()、max()、min()这样的组函数不存在。
我将总结果行(约60000行)导出到excel文件,并在excel表中求和
你有关于使用组函数(如sum())的提示或隐藏(?)函数/功能吗 从内存分析器文档中可以看出,它的OQL中没有聚合函数 但是,在中(自1.6和以来随JDK提供),您可以这样做:
select sum(heap.objects('net.sf.ehcache.store.compound.HashEntry'), 'rsizeof(it)')
或者,如果您想要浅尺寸而不是保留尺寸,请将“rsizeof”更改为“sizeof”:
您可以从OQL结果生成直方图-选择“显示为直方图”图标。
根据此直方图,您可以使用“计算精确保留集”图标计算保留大小。似乎无法在MAT或OQL中进行计算 然而,你可以用另一种方式来做
执行查询后,可以将结果导出到cvs文件。然后,您可以通过excel sum工具获得结果 如果你喜欢MAT而不是VisualVM,并且不坚持OQL,那么你也可以使用它的方解石插件() 总和的一个例子是:
SELECT sum(retainedSize(n.this['key']))
FROM "java.util.HashMap$Node" n
您可以在此处将其功能与oql进行比较:完美!第三季度~~~~~
SELECT sum(retainedSize(n.this['key']))
FROM "java.util.HashMap$Node" n