2010-08-21 2 views
6

В настоящее время я использую VisualVM, но проблема, с которой я сталкиваюсь, заключается в том, что я не могу сохранить графики, которые он создает. Мне нужно сообщить некоторые данные об использовании памяти и времени работы, хотя время работы легко получить с System.nanoTime(). Я также пробовал профилировщик NetBeans, но это не то, что я хочу, так как я не ищу конкретные детали, которые замедляли бы его или что-то еще, так что это было бы излишним. Самая большая проблема заключается в том, что он слишком много времени на обработку. Также не позволяет мне легко захватывать/переносить данные, например VisualVM, по крайней мере, насколько я могу судить.Лучший способ измерения использования памяти в Java-программе?

В идеале лучший способ сделать это будет вызов метода, потому что тогда я смогу получить информацию намного легче, но что-то вроде VisualVM, которое на самом деле позволяет мне сохранить график, отлично. Производительность с VisualVM тоже хороша, по сравнению с профилировщиком NetBeans, хотя я полагаю, это связано с тем, что я не использовал его профилировщик.

В настоящее время я использую Ubuntu, но Windows 7 в порядке. Я бы предпочел иметь программу, которая специализируется на этом, хотя, поскольку информация, полученная от программ, которые этого не делают, скорее всего, будет включать JVM и другие вещи, которые лучше не учитывать.

Ну, по-видимому, вы можете сохранить моментальные снимки текущего сеанса и увеличить окно в VisualVM, чтобы вы могли сделать диаграммы больше, сделать снимок и сократить их ... Но это своего рода хак. Приветствуются лучшие предложения.

ответ

0

Пробег: JProfiler. Хотя он не является бесплатным, вы можете сначала попробовать ознакомительную версию.

3

Посмотрите на класс Runtime. Он имеет freeMemory, maxMemory и totalMemory. Это, вероятно, достаточно близко для ваших целей.

0

Консоль HPjmeter бесплатная. Запустите свой Java-процесс с помощью -Xloggc:<file> и откройте <file>. Вы можете не только сохранить свои сеансы, но и сравнить результаты. Другие варианты рассмотреть вопрос о включении в командной строке:

-XX:+PrintGCTimeStamps 
-XX:+PrintGCDetails 
2

Вы можете предпочесть изящный метод измерения памяти, а не взламывать изображение. JConsole, как известно, контролирует приложения на JMX, он предоставляет программный API. Я думаю, это то, что вам нужно.

См: Using JConsole to Monitor Applications

 Смежные вопросы

  • Нет связанных вопросов^_^