2015-04-19 4 views
1

Какие настройки GC вы бы предложили для случая, когда буквально все объекты умирают очень молодыми? У меня 8 кучи Gb, по умолчанию 1.495 Gb используется для Eden и 191 Mb для каждого места для Survivor. Я вижу, что Tenured никогда не растет, он всегда остается на 0,01% занят. Но каждые 2-3 минуты у меня есть коллекция Eden. Отказ от неиспользованного пространства в Tenured не имеет смысла (или делает это?)? Какое у вас было бы предложение?java GC, когда все объекты умирают молодым

+0

Непонятно, почему кто-то понизил вопрос. В моем случае буквально все работы происходят в Идене, никогда в пространстве с тенями, С этим я боюсь максимизировать Иден и уменьшить Тенерифе, потому что я понятия не имею, опасно это или нет. Также я не хочу увеличивать время небольших коллекций, увеличивая количество eden. При всем том, что я вижу, как 6Gb Удержанное пространство всегда пусто, и все работает в 1.5Gb Eden. –

+0

«отложено на основании мнения». Я не понимаю. Почему? Что может быть неправильным в мнениях, указанных принятым ответом? Если вы положили что-то на удержание, вам нужно указать, почему, а не просто вырезать свои очки. Позор. Это прекрасный ответ на мой вопрос. –

ответ

1

Это не опасно. Пока куча удобно вписывается в основную память, у вас не будет проблем. Я также предлагаю вам использовать сжатые oops, где это возможно (сохраняя кучу < 32 ГБ) У меня часто есть Eden из 24 GB, так что если я создаю 1 ГБ, если мусор в час я получаю одну небольшую коллекцию в день. (На самом деле я планирую полную коллекцию в известное время каждый день)

С одной стороны, вы должны серьезно рассмотреть использование Java 8, поскольку JVM имеет эффективный анализ утечки. Это означает, что очень короткие объекты помещаются в стек и вообще не используют кучу.

Следует помнить, что стоимость сбора Эдена в основном пропорциональна количеству и размеру сохраненных объектов. Имея Eden, где вы почти ничего не сохраняете, 8-гигабайтный eden занял в два раза больше, чем 8 МБ eden для сбора. Увеличение размера Eden может дать вам больше времени, чтобы умереть в пространстве Eden и избежать копирования на оставшийся в живых.

+0

1) Считаете ли вы, что это нормально, чтобы установить -XX: NewRatio = 0.5, а это значит, что я хочу, чтобы молодые вдвое больше, чем пожилые? Едва ли представляю, что можно оставить крошечным Тенериным и крупным молодым .. :). 2) Не имеет значения для Java 8, что приложение, составленное Java 6, чтобы сделать трюк со стеком, о котором вы упомянули? Спасибо. –

+0

@VladimirNabokov вы не можете установить новый размер, который не является целочисленным AFAIK. Но да, я часто устанавливал, что Иден был в 10 раз выше. Java оптимизирует код динамически во время выполнения, основываясь на том, как вы его используете. Как это было составлено, это не имеет значения. –

+0

@ VladimirNabokov Кстати, только потому, что я установил Eden 10x, это не означает, что это имеет смысл для 95% случаев использования. Экстремальный пример - настройка на один gc в день. Моя точка зрения; это не проблема. –

Смежные вопросы