зрительная сила vm gc - PullRequest
       5

зрительная сила vm gc

2 голосов
/ 11 октября 2010
  1. i выборка использования памяти и подсчет количества экземпляров для POJO. если, когда я нажимаю «сборщик мусора» в visual vm и вижу экземпляры вниз, значит ли это, что утечка памяти свободна?

  2. как заставить jvm собирать мусор каждый день в полдень? (так же, как автоматически нажимать сборщик мусора на visualvm)? я вижу использование процессора в visualvm, gc всегда 0%. Я установил -xmx -xms 1024m, но обычно использование памяти составляет около 200 МБ. это потому что GC делается только когда это необходимо? поэтому всегда 0% на время работы процессора

  3. как проверить время последнего времени, когда вы выполняли «полный сбор данных»?

Ответы [ 2 ]

6 голосов
/ 11 октября 2010
  1. Нет, не обязательно.Все, что действительно означает, это то, что некоторые ваших объектов могут быть собраны.У вас все еще может быть утечка мусора, если, например, число экземпляров всегда уменьшается после GC, но не совсем до того же уровня, что и раньше;если бы этот «базовый уровень» со временем увеличился, у вас бывали нехватки памяти.Кроме того, очень трудно доказать отрицательный результат, поэтому может случиться так, что в вашем приложении есть ошибка утечки памяти, но эта конкретная ситуация не устраняет ее.
  2. Давайте проясним одну вещь - вы можетеникогда не заставляйте JVM запускать сборку мусора .Лучшее, что вы можете сделать, это позвонить System.gc(), что является подсказкой для JVM, которая может захотеть запустить GC сейчас.Он не должен ничего делать, и реализация этого метода в неоперативном режиме была бы совершенно допустимой.По сути, сборка мусора «просто происходит», и чем меньше вы возлагаете на нее особых ожиданий, тем лучше.В общем, да, обычно он запускается только при необходимости.
  3. Опять же, это, как правило, внутреннее знание, и детали будут зависеть от того, какую реализацию сборщика мусора вы используете.Однако для JVM от Sun вы можете использовать аргумент командной строки -verbose:gc для вывода подробных сведений о сборке мусора на консоль.Если вы хотите проверить детали программно или визуально, эта информация также может быть предоставлена ​​через JMX (т. Е. настроить ваш процесс на использование JMX remoting и подключиться к нему с помощью JConsole).Для меня, используя Sun 1.5.0_06 JVM, я вижу MBean в java.lang.GarbageCollector, который предоставляет некоторую информацию, включая время последнего полного GC.
1 голос
/ 11 октября 2010
  1. Нет.Нет конкретного способа определить, является ли ваше приложение свободным от утечек памяти.Лучше всего выполнить тест выдержки в течение продолжительного периода времени и убедиться, что размер динамической кучи стабилен.

  2. Вы можете использовать вызов метода System.gc() для запускасборщик мусора.

  3. Кажется, что нет API для получения последнего запуска GC, однако GarbageCollectorMXBean может дать некоторую статистику о GC.

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