Garbage Collection
-
- Уже с Приветом
- Posts: 13682
- Joined: 16 Jan 2001 10:01
Re: Garbage Collection
1GB это не из той оперы...
-
- Уже с Приветом
- Posts: 4195
- Joined: 27 Apr 2011 03:43
- Location: Сергели ->Chicago
Re: Garbage Collection
нет, то что видите по ссылке это дефолтные значения.anarchist wrote:12Gb хип?? Жава 8 вроде 1гб максимум, не?valchkou wrote:Flash-04 wrote: за всё надо платить: чем больше памяти, тем больше GC прибираться, тем дольше оно работает, тем дольше всё стоит и ждёт во время цикла уборки.мужики да вы сначала попробуйте, палыч, какой жава 6, это что вообще?Palych wrote: Вот-вот, при определённых условиях возникает лавинный эффект, и приложение встаёт колом (я это видео на java 6 в сочетании с глюком в jboss vfs)
вот слушает молодежь вас и думает что жава это гавно. и вместо жавы начинает изучать гавно.
времена изменились, теперь и железки другие и GC и сама жава.
все летает и на 1 гиге и на 12 и на 32х, никаких долгих пауз, милисекунды.
Запустите, поиграйтесь, посмотрите статистику, и уверяю вас вы будете приятно удивлены
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;
-
- Уже с Приветом
- Posts: 3175
- Joined: 17 May 2007 14:07
Re: Garbage Collection
G1 не работает по лимиту памяти как CMS или другие Java GC. Он как раз статистичесикий. Чем дольше Java работает тем стабильнее паузы, конечно если паттерн аллокации памяти не скачет туда сюда рандомно.
По дефолту G1 впринципе работает намного лучше чем CMS который требует тонкого тюнининга. Но G1 тоже требует настройки и у него есть ахилесовы пяты: Final, Weak, Soft and etc references, требует warm period чтобы статистику набрать и баги еще прут только так. Но в целом наш опыт что G1 работает гораздо предсказуемее и стабильнее чем CMS, которому переодически требуется переделывать fine tuning введу изменившегося кода.
По дефолту G1 впринципе работает намного лучше чем CMS который требует тонкого тюнининга. Но G1 тоже требует настройки и у него есть ахилесовы пяты: Final, Weak, Soft and etc references, требует warm period чтобы статистику набрать и баги еще прут только так. Но в целом наш опыт что G1 работает гораздо предсказуемее и стабильнее чем CMS, которому переодически требуется переделывать fine tuning введу изменившегося кода.
-
- Уже с Приветом
- Posts: 13682
- Joined: 16 Jan 2001 10:01
Re: Garbage Collection
Замечательно!valchkou wrote: времена изменились, теперь и железки другие и GC и сама жава.
все летает и на 1 гиге и на 12 и на 32х, никаких долгих пауз, милисекунды.
Так сколько будем ставить - 1 гиг, 12 или 32?
-
- Уже с Приветом
- Posts: 4195
- Joined: 27 Apr 2011 03:43
- Location: Сергели ->Chicago
Re: Garbage Collection
начать лучше с 0.5 а там как пойдетPalych wrote:Замечательно!valchkou wrote: времена изменились, теперь и железки другие и GC и сама жава.
все летает и на 1 гиге и на 12 и на 32х, никаких долгих пауз, милисекунды.
Так сколько будем ставить - 1 гиг, 12 или 32?
-
- Уже с Приветом
- Posts: 13682
- Joined: 16 Jan 2001 10:01
Re: Garbage Collection
IMHO это не слабости коллектора, а свидетельство неправильной концепции:kostik78 wrote: Но G1 тоже требует настройки и у него есть ахилесовы пяты: ...Weak, Soft and etc references...
Сборщик мусора по определению должен удалять объекты, которые не нужны приложению.
А эти недоссылки позволяют приложению использовать объекты, которые пока еще не нужны сборщику мусора.
Их использование подразумевает что сборщик мусора включается только когда памяти становится мало.
А это не всегда эффективно, и неправильно.
Им нужно отдельный сборщик для Weak/Soft and etc references...
-
- Уже с Приветом
- Posts: 3175
- Joined: 17 May 2007 14:07
Re: Garbage Collection
Проблема сборки мусора выглядит простой только на первый взгляд. Так что имхо прежде чем сетовать изучите предмет детальнее или хотя бы печальный опыт создателей Golang которые тоже как "дартаяны" кричали что JVM GC говно и они шас забабахают супер пупер GC и застряли с этим. Только к версии 1.6 (после фиксанья багов в новой имплементации GC в версии 1.5) что-то получилось более или менее соотвествующее. При этом Golang концептуальнее создает меньше временного мусора чем JVM. То бишь задача для решения должна была быть проще.Palych wrote:IMHO это не слабости коллектора, а свидетельство неправильной концепции:kostik78 wrote: Но G1 тоже требует настройки и у него есть ахилесовы пяты: ...Weak, Soft and etc references...
Сборщик мусора по определению должен удалять объекты, которые не нужны приложению.
А эти недоссылки позволяют приложению использовать объекты, которые пока еще не нужны сборщику мусора.
Их использование подразумевает что сборщик мусора включается только когда памяти становится мало.
А это не всегда эффективно, и неправильно.
Им нужно отдельный сборщик для Weak/Soft and etc references...
-
- Уже с Приветом
- Posts: 63430
- Joined: 03 Nov 2004 05:31
- Location: RU -> Toronto, ON
Re: Garbage Collection
Всё это теоретизирование, а на практике я работал с двумя enterprise level приложениями которые обрабатывают хренову кучу данных в real-time. То что написано на Java - глючное и прожорливое. То что написано на C++ быстрое и масштабируемое в отличие от. Стоит ли говорить что последнее за несколько лет отобрало большую часть рынка у первого (которое считалось лучшим минимум 5 лет).
Not everyone believes what I believe but my beliefs do not require them to.
-
- Уже с Приветом
- Posts: 3175
- Joined: 17 May 2007 14:07
Re: Garbage Collection
На жабе писать можно по разному также как и на С++ можно написать глючное, корявое и немаштабируемое. Так что дело имхо как говорят связисты: "дело было не в бобине, расп...яй сидел в кабине"Flash-04 wrote:Всё это теоретизирование, а на практике я работал с двумя enterprise level приложениями которые обрабатывают хренову кучу данных в real-time. То что написано на Java - глючное и прожорливое. То что написано на C++ быстрое и масштабируемое в отличие от. Стоит ли говорить что последнее за несколько лет отобрало большую часть рынка у первого (которое считалось лучшим минимум 5 лет).
-
- Уже с Приветом
- Posts: 15526
- Joined: 27 Sep 2007 22:53
Re: Garbage Collection
Но в последнем случае наверняка придется писать собственный аллокатор, а это мало кто сможет соорудить грамотно.Flash-04 wrote:Всё это теоретизирование, а на практике я работал с двумя enterprise level приложениями которые обрабатывают хренову кучу данных в real-time. То что написано на Java - глючное и прожорливое. То что написано на C++ быстрое и масштабируемое в отличие от. Стоит ли говорить что последнее за несколько лет отобрало большую часть рынка у первого (которое считалось лучшим минимум 5 лет).
Хотя семантика переноса, введенная в стандарт 11 года позволяет во многих вещах обходиться без активного использования динамической памяти.
-
- Уже с Приветом
- Posts: 63430
- Joined: 03 Nov 2004 05:31
- Location: RU -> Toronto, ON
Re: Garbage Collection
Хе-хе, я вам говорю о реальном решении которое сейчас топчет конкурентов сапогами
Not everyone believes what I believe but my beliefs do not require them to.
-
- Уже с Приветом
- Posts: 15526
- Joined: 27 Sep 2007 22:53
Re: Garbage Collection
Интересно, а как сборщик мусора виртуальной машины джавы синхронизируется с остальными процессами в многоядерной системе?
-
- Уже с Приветом
- Posts: 13682
- Joined: 16 Jan 2001 10:01
Re: Garbage Collection
Кстати, а почему тогда у Сабины пила?kostik78 wrote:G1 не работает по лимиту памяти как CMS или другие Java GC. Он как раз статистичесикий. Чем дольше Java работает тем стабильнее паузы, конечно если паттерн аллокации памяти не скачет туда сюда рандомно.
Сабина, признавайся - пила или не пила?
-
- Уже с Приветом
- Posts: 13682
- Joined: 16 Jan 2001 10:01
Re: Garbage Collection
Какого рода приложение?Flash-04 wrote:Хе-хе, я вам говорю о реальном решении которое сейчас топчет конкурентов сапогами
-
- Уже с Приветом
- Posts: 3175
- Joined: 17 May 2007 14:07
Re: Garbage Collection
Что именно синхронизирует - в какой области Вас интересует? Java heap состоит из нескольких зон и сам GC имеет несколько различных фаз. Соотвественно разные виды синхронизации Если Вы про world stop phase - то там все просто - JVM все процессы притормаживает в native code пока GC выполняет финальную фазу. Остальные фазы обычно работают параллельно с основным приложенем. В этом memory metadata что нужна GC защищается обычными синхронизационными примитивами. В случае линуха это pthread lock.Мальчик-Одуванчик wrote:Интересно, а как сборщик мусора виртуальной машины джавы синхронизируется с остальными процессами в многоядерной системе?
Если что спрашивайте конкретнее - я свое время с CMS на мучалсяизучался вплодь до исходников JVM native. С G1 пока только одна более или менее серезьная проблема была - он не учитывает -noclassgc и по этой причине иногда JVM раком встает. Баг в Java 9 пофиксали а в 8 нужно убрать опцию. Хотя она и правда остатки прошлого. Не нужно имхо в G1 этой оптимизации.
Last edited by kostik78 on 16 Feb 2017 04:13, edited 1 time in total.
-
- Уже с Приветом
- Posts: 3175
- Joined: 17 May 2007 14:07
Re: Garbage Collection
Palych wrote:Кстати, а почему тогда у Сабины пила?kostik78 wrote:G1 не работает по лимиту памяти как CMS или другие Java GC. Он как раз статистичесикий. Чем дольше Java работает тем стабильнее паузы, конечно если паттерн аллокации памяти не скачет туда сюда рандомно.
Сабина, признавайся - пила или не пила?
Пила равномерна потому что аллокация памяти линейная (равномерная пила это как раз что нужно добиваться в серверном Java code) и G1 работает постоянно чтобы meet the target of execution time. Включите статистику и все увидите, что там пила та пила да не такая как в CMS, где основной сборщик мусора тригирился по memory threshold.
-
- Уже с Приветом
- Posts: 13682
- Joined: 16 Jan 2001 10:01
Re: Garbage Collection
То есть - высота зубьев пилы не зависит от размера Xmx?kostik78 wrote:там пила та пила да не такая как в CMS, где основной сборщик мусора тригирился по memory threshold.
-
- Уже с Приветом
- Posts: 3175
- Joined: 17 May 2007 14:07
Re: Garbage Collection
Ответ на этот вопрос не совсем прост. Но в целом не зависит. Но в G1 есть ньюанс, он чем то похож на CMS если Вы расcматриваете отдельный регион (eden gen + metadata + old gen), но в отличие от CMS у которого был только один такой регион G1 делит хип на множество таких кубиков. Там на самом деле есть threshold -XX:InitiatingHeapOccupancyPercent=45. Он говорит G1 на начальном этапе как вести себя пока статистика не набрана еще. Например у нас в продакщен первые 24 часа можно увидеть несколько пауз которые привышают XX:MaxGCPauseMillis но по истечении 24 часов 92% пауз будут <=200ms. И раз в 72-80 часов у нас случаются 800ms паузы но из за FinalReferences что известная проблема у G1. Оптимизация по времени привела к тому что он не очень успевает вызывать finalize на SSL sockets. Ну это отдельная история - как я уже сказал - это детали имплементацииPalych wrote:То есть - высота зубьев пилы не зависит от размера Xmx?kostik78 wrote:там пила та пила да не такая как в CMS, где основной сборщик мусора тригирился по memory threshold.
-
- Уже с Приветом
- Posts: 63430
- Joined: 03 Nov 2004 05:31
- Location: RU -> Toronto, ON
Re: Garbage Collection
SplunkPalych wrote:Какого рода приложение?
Not everyone believes what I believe but my beliefs do not require them to.
-
- Уже с Приветом
- Posts: 19041
- Joined: 11 Jan 2012 09:25
- Location: CA
Re: Garbage Collection
anarchist wrote:
12Gb хип?? Жава 8 вроде 1гб максимум, не?
https://www.youtube.com/watch?v=wOwblaKmyVw
-
- Уже с Приветом
- Posts: 19041
- Joined: 11 Jan 2012 09:25
- Location: CA
Re: Garbage Collection
У нас 16, все замечательно. Но max memory вообще то ставится в зависимости от системы и приложенияPalych wrote:Замечательно!valchkou wrote: времена изменились, теперь и железки другие и GC и сама жава.
все летает и на 1 гиге и на 12 и на 32х, никаких долгих пауз, милисекунды.
Так сколько будем ставить - 1 гиг, 12 или 32?
https://www.youtube.com/watch?v=wOwblaKmyVw
-
- Уже с Приветом
- Posts: 63430
- Joined: 03 Nov 2004 05:31
- Location: RU -> Toronto, ON
Re: Garbage Collection
А 128 Gb не хотите?
История увеличения памяти для одного и того же приложения:
Вначале жила в 1.6Gb (больше на Win32 нельзя было дать). Потом переехало на Linux64 и пошло:
- 8Gb
- 16 Gb
- 32 Gb
- 64 Gb
(подправлено. на сервере 128Gb, но Java отдали только половину, что логично).
История увеличения памяти для одного и того же приложения:
Вначале жила в 1.6Gb (больше на Win32 нельзя было дать). Потом переехало на Linux64 и пошло:
- 8Gb
- 16 Gb
- 32 Gb
- 64 Gb
(подправлено. на сервере 128Gb, но Java отдали только половину, что логично).
Not everyone believes what I believe but my beliefs do not require them to.
-
- Уже с Приветом
- Posts: 1870
- Joined: 28 Dec 2014 18:20
Re: Garbage Collection
Давно я не конфигурил Жаву.Сабина wrote:anarchist wrote:
12Gb хип?? Жава 8 вроде 1гб максимум, не?
Так мы все еще про размер хипа, или про размер физической памяти на сервере? Что то я с трудом себе представляю нахрена хип размером 12гб для Жава приложения.
Vox populi vox Dei
-
- Уже с Приветом
- Posts: 63430
- Joined: 03 Nov 2004 05:31
- Location: RU -> Toronto, ON
Re: Garbage Collection
Иногда и больше надо.
Not everyone believes what I believe but my beliefs do not require them to.
-
- Уже с Приветом
- Posts: 1349
- Joined: 28 Nov 2008 17:50
Re: Garbage Collection
а где там С++, если эта фигня поверх java и hadoop построена ? там веб админка, что ли на C++ ?Flash-04 wrote:SplunkPalych wrote:Какого рода приложение?
Last edited by iDesperado on 16 Feb 2017 19:10, edited 1 time in total.