2015-09-03 8 views
3

Мы обновляем с Java 6 и Tomcat 6 до Java 1.8.0_45 и Tomcat 8.0.23, серверы Linux, 64 бит. Я сравниваю использование памяти, и я сталкиваюсь с странным поведением.Использование сборщика мусора при обновлении с Java 6 + Tomcat 6 до Java 8 + Tomcat 8

Это как Eden Space выглядит с Java 8 в Tomcat 8 без движения, только начал и простаивает: enter image description here

И вот как это выглядит с Java 6, стандарт для меня: java 6 tomcat 6

Оба JVMs настроены таким же образом, в основном:

XX:+UseParallelGC -XX:+UseParallelOldGC -XX:+DisableExplicitGC -Xms768m -Xmx2048m -Xmn400m

с Java 8 и Tomcat 8 незначительного GC является lmost всегда работает и кот журнал показать это:

1301,121: [GC (Allocation Failure) [PSYoungGen: 408960K->352K(409088K)] 1126151K->717559K(1915392K), 0,0093033 secs] [Times: user=0,02 sys=0,00, real=0,01 secs]

Вы знаете, некоторые специальные настройки для виртуальной машины Java 8 или что-то я должен сделать, чтобы иметь такое же поведение, чем раньше?

EDIT:

Через 30 мин, Иден Пространство:

enter image description here

+1

В java-8 Вы можете использовать 'G1GC' вместо' ParallelGC'. Это * может * улучшить вашу производительность. Пошлите «CMS». Кроме того, вы должны установить количество потоков, которые будут использоваться для GC – TheLostMind

+0

, спасибо @TheLostMind, но вопрос в том, почему поведение не такое же, как раньше? –

+0

Вы не должны ожидать подобного поведения в JVM. Слишком много вещей могло измениться, что привело к такому выводу – TheLostMind

ответ

0

Для меня это выглядит как это проблема с самим приложением, в первую очередь. Вы сказали, что приложение простаивает, но на графике показано (даже на Java 6), что приложение выделяет 400 МБ памяти и освобождает его дважды в секунду. Это действительно не похоже, что это приложение простаивает.

Возможно, ваше приложение создает много объектов (даже если оно «простаивает»). GC и Optimizer были изменены в Java 8 с Java 6. Это может объяснить разные графики.

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

+0

К сожалению, график с Java 6 является реальной производственной средой с трафиком. Пожалуйста, ознакомьтесь с соответствующим вопросом: http://stackoverflow.com/questions/32392402/memory-allocation-behaviour-with-java-1-8-in-tomcat-6-and-tomcat-8 –