2009-06-29 6 views
4

Как проверить, сколько ресурсов использует программа java?Как проверить, сколько ресурсов использует программа java?

В java довольно просто создать большую симпатичную программу, которая делает практически все, что вы хотите, но небольшой побочный эффект - это также очень легко косвенно распределить по многочисленным циклам памяти и процессора по ошибке (т.е. давайте просто используйте «новый» пару раз в неправильном месте).

И если программа должна работать в среде с очень ограниченным объемом ресурсов, скажем, что-то встроенное или, возможно, мобильный телефон (J2ME, Android и т. Д.), , важно знать, как ресурс проголодался вашей программой является.

Примечание: Так как мое основное внимание было с последними годами я мог отсутствовать что-то очень просто здесь, поэтому, пожалуйста, не предполагает много;)

Благодаря Йохан

ответ

5
maxMemory(); 
totalMemory(); 
freeMemory(); 
+0

Хорошая ссылка, спасибо – Johan

+0

мертвая ссылка?(по состоянию на 2016-07-22) – dustmachine

+0

Мертвая ссылка удалена –

1

если вы пытаетесь захватить эти атрибуты вне программы для тестов производительности; вы также можете использовать Java Profiler. Там есть хорошие профилировщики. Java 6 также предоставляет возможность выполнять такие виды деятельности. например J Профилировщик Если вы хотите больше таких инструментов; дай мне знать.

+0

Не могли бы вы рассказать мне больше об этих профиляторах или, возможно, предоставить небольшую ссылку? Это звучит очень интересно. – Johan

+0

http://java-source.net/open-source/profilers Эта ссылка предоставит вам хосты Java-профилей с открытым кодом. Некоторые из них действительно хороши. Выбирайте. Что касается профайлеров, прочитайте здесь несколько статей, в которых рассказывается, какие функции следует искать в профилографах. http://www.javaworld.com/javaworld/jw-08-2003/jw-0822-profiler.html – Priyank

+0

Подробнее о профилировщиках Java на SO: http://stackoverflow.com/questions/tagged/java+profiler и http://stackoverflow.com/questions/tagged/java+profiling – Jonik

0

С Java 1.6 имеется набор инструментов, позволяющих контролировать JVM. Один из них - jmap. Вы можете взглянуть на него.

Я не совсем уверен, как это относится к J2ME, но я бы предположил, что вы можете применить ту же технику к эмулятору J2ME на компьютере (используя полную JVM, а не KVM).

4

Вы, кажется, несколько смущены тем, что вам действительно нужно. В вашем вопросе я чувствую некоторую тревогу о том, «сколько ресурсов будет зависеть Java за моей спиной, чтобы укусить меня позже?».

Ответ на этот вопрос, перефразируя Дугласа Адамса: «Не паникуйте!» :-).

Серьезно, Java не обязательно использует гораздо больше ресурсов, чем «родное» приложение, поэтому вам, вероятно, не нужно беспокоиться.

Быстрый изношенном:

  • Java программы будет иметь фиксированный расход памяти из-за виртуальной машины Java, то есть даже тривиальная программа будет есть несколько мегабайт памяти. Однако это не будет расти для более сложного программного обеспечения, поэтому на практике это обычно не проблема. Кроме того, несколько виртуальных машин Java, работающих параллельно, будут разделять большую часть ОЗУ.
  • CPU: В общем, Java-программа будет использовать то же самое время процессора, что и эквивалентная исходная программа. Нет основополагающей причины, по которой Java потребуется больше. У сборки мусора есть некоторые накладные расходы, но обычно это не так важно (и ручное управление памятью также имеет накладные расходы).
  • Тем не менее, такие вещи, как случайное удержание объекта или ненужные большие объекты, могут вызвать проблемы с памятью. Но это проблема, с которой вы справляетесь, когда она возникает.

Краткая версия: Не беспокойтесь, просто делайте то, что вы всегда делаете: запустите его, заставьте его работать правильно, запустите его быстро (путем профилирования).

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