как суммировать @retainedHeapSize с oql в Eclipse Memory Analyzer Tool - PullRequest
12 голосов
/ 29 июня 2011

Использовали ли вы MAT (Memory Analyzer Tool) из Eclipse.это действительно круто. (1.5G файл дампа кучи убивает 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 ())?

Ответы [ 3 ]

8 голосов
/ 12 сентября 2011

Насколько я могу судить из документации Memory Analyzer, в его OQL нет функций агрегирования.

Однако в VisualVm (входит в JDK начиная с 1.6 и загружается как отдельное приложение ), вы можете сделать это следующим образом:

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)')
3 голосов
/ 02 июля 2013

Вы можете сгенерировать гистограмму из результатов OQL - выберите значок «Показать как гистограмму».Из этой гистограммы вы можете рассчитать оставшийся размер, используя значок «Рассчитать точный оставшийся набор».

0 голосов
/ 25 октября 2018

Кажется, что нет способа сделать это в MAT или OQL

Однако вы можете сделать это другим способом.

после выполнения запроса вы можете экспортировать результат в файл cvs. тогда вы можете получить результат с помощью инструмента Excel Sum.

...