Что я сделал, чтобы «обработка слабых ссылок» занимала 30 секунд вместо 1,5 секунд?

История

Мой сервер работает с процессорами 24x2, а куча java составляет примерно 70 ГБ. В какой-то момент после установки новой версии (версия-B) я увидел, что полная сборка мусора занимает около 30 секунд (останавливает все потоки). После включения XX: + ParallelRefProcEnabled обработка слабых ссылок сократилась до 3-6 секунд. Но это всего лишь «сгибание тела», а не лекарство.

2011-03-22T20: 38: 24.276 + 0000: 29540.794: [GC [размещение YG: 5477281 K (7549760 K)] 29540.794: [Повторное сканирование (параллельно), 0,4083780 сек] 29541.203: [обработка слабых ссылок, 3.2855240 сек] 29544.488: [разгрузка класса, 0,0187270 секунд] 29544,507: [очистить таблицы символов и строк, 0,0095530 secs] [1 CMS-примечание: 102801236K (114294784K)] 108278518K (121844544K), 3,7319690 сек] [Время: пользователь = 65,53, системный = 0,14, real = 3,73 секунды]

До версии B (и без флага ParallelRefProcEnabled) обработка слабых ссылок занимала около 1,5 секунд. (Примерно для такой же нагрузки)

Цель:

Я пытаюсь выяснить, какое изменение было внесено в версию B, которое привело к скачку обработки с 1,5 до 30 секунд. В версии B есть несколько изменений, и нет никаких реальных подозрений, связанных со слабыми ссылками.

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

Вопросы:

  • Я бы хотел чтобы понять, что именно происходит на этапе «обработки слабых ссылок», чтобы я мог найти подозреваемого или оправдать переписывание кода. Есть ли хороший источник для чтения о том, что именно происходит на этом этапе?

  • Каковы возможные причины долгой «обработки слабых ссылок»? (Количество экземпляров слабых ссылок, количество объектов, содержащих слабые ссылки, глубина дерева ссылок, на которое слабо ссылаются, ...)

Дополнительная информация:

  • Использование ЦП не так велико и не кажется проблемой
  • Сборщик мусора (который включает обработку слабых ссылок) происходит примерно каждые 8 ​​минут.
  • Запуск Java Sun, 1.6.0_20

I ' Спасибо, Эрез.

11
задан Vladimir Ivanov 24 March 2011 в 16:26
поделиться