Смена сборщика мусора с Java 1.4 на Java 6? - PullRequest
6 голосов
/ 20 августа 2010

Недавно мы обновили одно из наших приложений с Java 1.4 до Java 6.

С некоторыми тестами нагрузки и производительности мы заметили, что доступная память в целом осталась на гораздо более низких уровнях в Java 6, чем онаРаньше было с Java 1.4.

После некоторого профилирования в приложении с Java 6 мы заметили, что многие объекты, на которые больше не ссылаются другие объекты (например, кандидаты на сборку мусора), оставались в памяти и, по-видимому, никогда не были мусором.собраны.Мы взяли это как объяснение более низкой доступной памяти.

Вопрос в том, изменился ли способ сбора мусора с Java 1.4 на Java 6?

Ответы [ 3 ]

15 голосов
/ 20 августа 2010

изменился ли способ сбора мусора с Java 1.4 на Java 6?

Определенно!

Java 1.4 на Java 6 - довольно длительный промежуток времени (почти 5годы между начальными выпусками и более 8 лет между первоначальным выпуском 1.4 и текущим выпуском Java 6 , согласно эта статья вики ).

В это время применяется множество изменений и оптимизаций, и вам должно быть все равно, пока ваша программа все еще работает.

Наличие большего количества используемой памяти означает толькочто JVM не тратит время на сбор мусора, когда в этом нет необходимости.Если вы хотите, чтобы он использовал меньше памяти, вам следует уменьшить максимальную кучу (или иначе настроить параметры JVM; В этой статье объясняется, как это сделать в Java 5, большая часть рекомендаций по-прежнему применима).

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

5 голосов
/ 20 августа 2010

Было проведено несколько оптимизаций по сбору мусора между 1.4 и 5 и между 5 и 6

oracle / sun имеет некоторые технические характеристики различий в производительности онлайн.

http://java.sun.com/performance/reference/whitepapers/5.0_performance.html#2.11

http://java.sun.com/performance/reference/whitepapers/6_performance.html#2.2

3 голосов
/ 20 августа 2010

Java SE сильно изменилась за 8 лет.

Что касается сборщика мусора, он был значительно улучшен с Java SE 6 .В Java SE 6 Update 14 был представлен новый Garbage First GC.

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