Garbage Collection

Palych
Уже с Приветом
Posts: 13723
Joined: 16 Jan 2001 10:01

Re: Garbage Collection

Post by Palych »

iDesperado wrote:
valchkou wrote: не важно какой тип коллектора - все они в JVM запускаются по memory threshold а не по CPU availability, даже G1.
а какой физический смысл смотреть на CPU availability ? уже через долю секунды нагрузка изменится.
Понятно что нужен компромисс, но если смотреть на память и ничего не делать если её достаточно - становится невозможно определить сколько нужно памяти и сколько её используется.
А если выделить слишком много - есть риск что не хватит времени разобрать большую кучу к тому времени как место понадобится.
Palych
Уже с Приветом
Posts: 13723
Joined: 16 Jan 2001 10:01

Re: Garbage Collection

Post by Palych »

А как с этим в .Net?
Там тоже с бубном пляшут настраивая сборщики мусора?
User avatar
valchkou
Уже с Приветом
Posts: 4195
Joined: 27 Apr 2011 03:43
Location: Сергели ->Chicago

Re: Garbage Collection

Post by valchkou »

iDesperado wrote:
valchkou wrote: не важно какой тип коллектора - все они в JVM запускаются по memory threshold а не по CPU availability, даже G1.
а какой физический смысл смотреть на CPU availability ? уже через долю секунды нагрузка изменится.
CPU availability возможно не совсем точное определение, но тут нет ничего удивительного
К примеру V8 javascript GC использует данную концепцию
" Idle Time Garbage Collection Scheduling"
V8 posts idle tasks to the scheduler in order to perform both minor and major garbage collection during idle time
User avatar
valchkou
Уже с Приветом
Posts: 4195
Joined: 27 Apr 2011 03:43
Location: Сергели ->Chicago

Re: Garbage Collection

Post by valchkou »

Palych wrote:А как с этим в .Net?
Там тоже с бубном пляшут настраивая сборщики мусора?
палыч, расскажи зачем ты бубном пляшешь, что у тебя за usecase?
java 8 великолепно работает из коробочки без бубнов. Ну если только размер памяти задать побольше
iDesperado
Уже с Приветом
Posts: 1349
Joined: 28 Nov 2008 17:50

Re: Garbage Collection

Post by iDesperado »

valchkou wrote: CPU availability возможно не совсем точное определение, но тут нет ничего удивительного
К примеру V8 javascript GC использует данную концепцию
" Idle Time Garbage Collection Scheduling"
V8 posts idle tasks to the scheduler in order to perform both minor and major garbage collection during idle time
As soon as an incremental major garbage collection is started, V8 posts an idle task to Chrome's task scheduler, which will perform incremental marking steps. These steps can be linearly scaled by the number of bytes that should be marked. Based on the average measured marking speed, the idle task tries to fit as much marking work as possible into the given idle time. The idle task keeps reposting itself until all live objects are marked. V8 then posts an idle task for finalizing the major garbage collection..

как я понимаю idle time это время между major garbage collection, которое четко задается.
User avatar
Flash-04
Уже с Приветом
Posts: 63430
Joined: 03 Nov 2004 05:31
Location: RU -> Toronto, ON

Re: Garbage Collection

Post by Flash-04 »

valchkou wrote:java 8 великолепно работает из коробочки без бубнов. Ну если только размер памяти задать побольше
за всё надо платить: чем больше памяти, тем больше GC прибираться, тем дольше оно работает, тем дольше всё стоит и ждёт во время цикла уборки.
Not everyone believes what I believe but my beliefs do not require them to.
Palych
Уже с Приветом
Posts: 13723
Joined: 16 Jan 2001 10:01

Re: Garbage Collection

Post by Palych »

Flash-04 wrote:
valchkou wrote:java 8 великолепно работает из коробочки без бубнов. Ну если только размер памяти задать побольше
за всё надо платить: чем больше памяти, тем больше GC прибираться, тем дольше оно работает, тем дольше всё стоит и ждёт во время цикла уборки.
Вот-вот, при определённых условиях возникает лавинный эффект, и приложение встаёт колом (я это видео на java 6 в сочетании с глюком в jboss vfs)

А главное: "побольше" - это сколько?
Я знаю что интенсивный анализ требований к памяти новых приложений заканчивается выводом: "А сколько у вас есть? Вот и выделяйте всю. Только не забудьте Xms поставить такой-же как Xmx"... а потом админы утверждаются во мнении "Жаба жрет память как свинья помои".

Мне любопытно изменилось ли что-то за последние годы
anarchist
Уже с Приветом
Posts: 1870
Joined: 28 Dec 2014 18:20

Re: Garbage Collection

Post by anarchist »

Palych wrote:А почему а Java сборка мусора начинается когда его накопилось достаточно много (70%)?
Почему не убираться когда для этого есть ресурсы (CPU time)?
Как с этим в других системах?
А где написано про 70%? У меня так сейчас под Жава6 и на 80% не срабатывает, где то 90% доходит, потом жах.
Vox populi vox Dei
User avatar
valchkou
Уже с Приветом
Posts: 4195
Joined: 27 Apr 2011 03:43
Location: Сергели ->Chicago

Re: Garbage Collection

Post by valchkou »

Flash-04 wrote: за всё надо платить: чем больше памяти, тем больше GC прибираться, тем дольше оно работает, тем дольше всё стоит и ждёт во время цикла уборки.
Palych wrote: Вот-вот, при определённых условиях возникает лавинный эффект, и приложение встаёт колом (я это видео на java 6 в сочетании с глюком в jboss vfs)
мужики да вы сначала попробуйте, палыч, какой жава 6, это что вообще?
вот слушает молодежь вас и думает что жава это гавно. и вместо жавы начинает изучать гавно.
времена изменились, теперь и железки другие и GC и сама жава.
все летает и на 1 гиге и на 12 и на 32х, никаких долгих пауз, милисекунды.
Запустите, поиграйтесь, посмотрите статистику, и уверяю вас вы будете приятно удивлены
anarchist
Уже с Приветом
Posts: 1870
Joined: 28 Dec 2014 18:20

Re: Garbage Collection

Post by anarchist »

valchkou wrote:
Flash-04 wrote: за всё надо платить: чем больше памяти, тем больше GC прибираться, тем дольше оно работает, тем дольше всё стоит и ждёт во время цикла уборки.
Palych wrote: Вот-вот, при определённых условиях возникает лавинный эффект, и приложение встаёт колом (я это видео на java 6 в сочетании с глюком в jboss vfs)
мужики да вы сначала попробуйте, палыч, какой жава 6, это что вообще?
вот слушает молодежь вас и думает что жава это гавно. и вместо жавы начинает изучать гавно.
времена изменились, теперь и железки другие и GC и сама жава.
все летает и на 1 гиге и на 12 и на 32х, никаких долгих пауз, милисекунды.
Запустите, поиграйтесь, посмотрите статистику, и уверяю вас вы будете приятно удивлены
12Gb хип?? Жава 8 вроде 1гб максимум, не?

maximum heap size
"Smaller of 1/4th of the physical memory or 1GB. Before Java SE 5.0, the default maximum heap size was 64MB. You can override this default using the -Xmx command-line option."
https://docs.oracle.com/javase/8/docs/t ... omics.html" onclick="window.open(this.href);return false;
Vox populi vox Dei
Palych
Уже с Приветом
Posts: 13723
Joined: 16 Jan 2001 10:01

Re: Garbage Collection

Post by Palych »

1GB это не из той оперы...
User avatar
valchkou
Уже с Приветом
Posts: 4195
Joined: 27 Apr 2011 03:43
Location: Сергели ->Chicago

Re: Garbage Collection

Post by valchkou »

anarchist wrote:
valchkou wrote:
Flash-04 wrote: за всё надо платить: чем больше памяти, тем больше GC прибираться, тем дольше оно работает, тем дольше всё стоит и ждёт во время цикла уборки.
Palych wrote: Вот-вот, при определённых условиях возникает лавинный эффект, и приложение встаёт колом (я это видео на java 6 в сочетании с глюком в jboss vfs)
мужики да вы сначала попробуйте, палыч, какой жава 6, это что вообще?
вот слушает молодежь вас и думает что жава это гавно. и вместо жавы начинает изучать гавно.
времена изменились, теперь и железки другие и GC и сама жава.
все летает и на 1 гиге и на 12 и на 32х, никаких долгих пауз, милисекунды.
Запустите, поиграйтесь, посмотрите статистику, и уверяю вас вы будете приятно удивлены
12Gb хип?? Жава 8 вроде 1гб максимум, не?

maximum heap size
"Smaller of 1/4th of the physical memory or 1GB. Before Java SE 5.0, the default maximum heap size was 64MB. You can override this default using the -Xmx command-line option."
https://docs.oracle.com/javase/8/docs/t ... omics.html" onclick="window.open(this.href);return false;
нет, то что видите по ссылке это дефолтные значения.
kostik78
Уже с Приветом
Posts: 3175
Joined: 17 May 2007 14:07

Re: Garbage Collection

Post by kostik78 »

G1 не работает по лимиту памяти как CMS или другие Java GC. Он как раз статистичесикий. Чем дольше Java работает тем стабильнее паузы, конечно если паттерн аллокации памяти не скачет туда сюда рандомно.
По дефолту G1 впринципе работает намного лучше чем CMS который требует тонкого тюнининга. Но G1 тоже требует настройки и у него есть ахилесовы пяты: Final, Weak, Soft and etc references, требует warm period чтобы статистику набрать и баги еще прут только так. Но в целом наш опыт что G1 работает гораздо предсказуемее и стабильнее чем CMS, которому переодически требуется переделывать fine tuning введу изменившегося кода.
Palych
Уже с Приветом
Posts: 13723
Joined: 16 Jan 2001 10:01

Re: Garbage Collection

Post by Palych »

valchkou wrote: времена изменились, теперь и железки другие и GC и сама жава.
все летает и на 1 гиге и на 12 и на 32х, никаких долгих пауз, милисекунды.
Замечательно!
Так сколько будем ставить - 1 гиг, 12 или 32?
User avatar
valchkou
Уже с Приветом
Posts: 4195
Joined: 27 Apr 2011 03:43
Location: Сергели ->Chicago

Re: Garbage Collection

Post by valchkou »

Palych wrote:
valchkou wrote: времена изменились, теперь и железки другие и GC и сама жава.
все летает и на 1 гиге и на 12 и на 32х, никаких долгих пауз, милисекунды.
Замечательно!
Так сколько будем ставить - 1 гиг, 12 или 32?
начать лучше с 0.5 а там как пойдет

Return to “Вопросы и новости IT”