2013-08-20 3 views
0

У меня есть проект Java, который инициализирует тысячи объектов в древовидной иерархии.Class-wise профилирование потребления памяти Java

Изначально я программировал с учетом производительности и, таким образом, не возражали хранения много вычисляемых свойств в полях класса (переменные) ..
Однако, в последнее время, я начал пытаться оценить объем памяти моего проекта и нашел, что он очень большой.

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

я наткнулся instrumentation пакета Java и getObjectSize

Я попытался понять их документацию, но я не уверен, что instrumentation подходит для моей задачи.
Я также заметил, что getObjectSize не рекурсивно найти размеры.

Я думал о создании класса, который расширяет Object и содержит статическую карту instance -> instanceSize, а затем сделать все мои классы расширить этот класс, а также обновлять свои конструкторы

Является ли мой подход правильным?
Каким будет самый «Java» способ выполнить это?

ответ

1

Ум, отложите инструменты кодирования и заберите профайлер памяти. там есть большие бесплатные.

+0

Я начал использовать инструмент анализа памяти Eclipse (MAT), и он отлично справляется с работой! Спасибо за понимание –