Сэмплер памяти Java VisualVM - как получить размер определенного класса

Мое приложение использует намного больше памяти, чем я предполагаю, и я пытаюсь понять, какой класс использует большой объем памяти и, возможно, не освобождает его.

Я использую VisualVM, и в сэмплере памяти я вижу, что большая часть памяти тратится на символы, строки и байты, все мои классы используют строки, но, как вы знаете, VisualVM показывает ВСЕ символы и строки в системе. (все символы идентичны строкам, что затрудняет понимание того, кто их держит), насколько я понимаю, размер других классов, содержащих эти строки, рассчитывается без учета строк.

Как я могу увидеть в этом инструменте, какие классы являются «Реальными» наибольшими - те, которые содержат все эти строки? (желательно, если я могу перейти от этих классов к их строкам, а не наоборот) Я попытался использовать «корень до ближайшего сборщика мусора» в heapDump, но там около 4 000 000 строк, поэтому шанс найти «проблемные» очень мал ...

Спасибо !!!

6
задан aye 9 January 2012 в 13:49
поделиться