Как определить фактическое использование памяти структуры данных - PullRequest
1 голос
/ 26 октября 2010

В структурах данных я знаю, что размер структуры зависит от внутренних ссылок из одного раздела в другой. Есть ли способ, кроме JProfiler, точно сказать, сколько памяти связано в конкретной структуре?

Например, проект класса в этом семестре связан с применением различных структур к базе данных песен. Проекты охватывали массивы, списки, развернутые списки и деревья. То, что я хотел бы сделать, это посмотреть, сколько памяти используется. Например, связанный список имеет требование к памяти 3N, но я хотел бы увидеть, сколько места занимает узел в моем проекте.

Похоже, JProfiler будет работать, но $ 500 выходит за пределы моего ценового диапазона, и я хотел бы использовать его для всех структур, охватываемых в этом семестре, а не для трех, применяемых до сих пор.

Ответы [ 4 ]

6 голосов
/ 26 октября 2010

alt text

Используйте VisualVM . Он поставляется с JDK и позволяет сделать снимок кучи.

1 голос
/ 26 октября 2010

Честно говоря, я никогда раньше этим не пользовался, но есть метод getObjectSize как часть интерфейса Instrumentation , который может предоставить нужные ответы без стороннего приложения. Это не может быть проще, чем VisualVM, как предположил Амир, но никогда не повредит читать об этом.

1 голос
/ 26 октября 2010

Наиболее точный способ, вероятно, использовать профилировщик - используйте Google, чтобы найти бесплатные.

В качестве альтернативы, вы можете попробовать методику в Знаете ли вы свой размер данных? .

0 голосов
/ 26 октября 2010

Используйте System.getRuntime (). FreeMemory ().

Запустить сборщик мусора; Проверьте свободную память; создать один из ваших объектов; проверить свободную память; вычитать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...