Сборщик мусора занимает слишком много времени процессора

Я разработал веб-приложение, которое обрабатывает огромное количество данных и занимает много времени?

Итак, сейчас я занимаюсь профилированием своего приложения и заметил одну очень плохую вещь в GC.
Когда происходит полный сборщик мусора, он останавливает весь процесс на 30–40 секунд.

Интересно, есть ли способ улучшить это. Я не хочу тратить столько времени на свой процессор только на GC. Ниже приведены некоторые полезные сведения:

  1. Я использую Java 1.6.0.23
  2. Мое приложение занимает максимум 20 ГБ памяти.
  3. Полная сборка мусора выполняется каждые 14 минут.
  4. Память до GC составляет 20 ГБ, а после GC — 7,8 ГБ.
  5. Память, используемая ЦП (т. е. показанная в диспетчере задач), составляет 41 ГБ.
  6. После завершения процесса (JVM все еще работает) Используется память 5 ГБ и свободная память 15 ГБ.
5
задан darijan 6 August 2015 в 13:46
поделиться