JVM internals - what does the JVM do? — Ian Rogers
-
- Уже с Приветом
- Posts: 19041
- Joined: 11 Jan 2012 09:25
- Location: CA
Re: JVM internals - what does the JVM do? — Ian Rogers
Хорошая презентация, я его слушала вживую, понравилось - http://mrkn.co/s/video_learn_about_jvm_ ... index.html.
Еще если кому интересно:
http://marakana.com/s/tuning_jvm_for_a_ ... index.html
Еще если кому интересно:
http://marakana.com/s/tuning_jvm_for_a_ ... index.html
https://www.youtube.com/watch?v=wOwblaKmyVw
-
- Уже с Приветом
- Posts: 19041
- Joined: 11 Jan 2012 09:25
- Location: CA
Re: JVM internals - what does the JVM do? — Ian Rogers
Тот же Ян Роджерс так говорил об Азуле перед своей презентацией, что это чуть ли не официальная должность на кoторой ему надо отсиживать, но для фана он делает кучи других интересных и прибыльных вешей. Может это CIA sponsored or something ?dotcom wrote:Мне всегда интересовало, что Azul при всех великих обещаниях, всех этих умных людях, оставшись практически в одиночку на рынке java процессоров и ускорителей, никак не может ни родить ни продать за столько лет.
https://www.youtube.com/watch?v=wOwblaKmyVw
-
- Уже с Приветом
- Posts: 24375
- Joined: 18 Nov 2003 16:42
Re: JVM internals - what does the JVM do? — Ian Rogers
он уже оттуда ушёл в андроидСабина wrote:Тот же Ян Роджерс так говорил об Азуле перед своей презентацией, что это чуть ли не официальная должность на кoторой ему надо отсиживать, но для фана он делает кучи других интересных и прибыльных вешей. Может это CIA sponsored or something ?dotcom wrote:Мне всегда интересовало, что Azul при всех великих обещаниях, всех этих умных людях, оставшись практически в одиночку на рынке java процессоров и ускорителей, никак не может ни родить ни продать за столько лет.
Don't code today what you can't debug tomorrow.
-
- Уже с Приветом
- Posts: 19041
- Joined: 11 Jan 2012 09:25
- Location: CA
Re: JVM internals - what does the JVM do? — Ian Rogers
Вам виднее - я за ним не следила после той презентации, просто запало что он как-то отмежевался от Азула еше тогдаrzen wrote:он уже оттуда ушёл в андроидСабина wrote:Тот же Ян Роджерс так говорил об Азуле перед своей презентацией, что это чуть ли не официальная должность на кoторой ему надо отсиживать, но для фана он делает кучи других интересных и прибыльных вешей. Может это CIA sponsored or something ?dotcom wrote:Мне всегда интересовало, что Azul при всех великих обещаниях, всех этих умных людях, оставшись практически в одиночку на рынке java процессоров и ускорителей, никак не может ни родить ни продать за столько лет.
https://www.youtube.com/watch?v=wOwblaKmyVw
-
- Уже с Приветом
- Posts: 24375
- Joined: 18 Nov 2003 16:42
Re: JVM internals - what does the JVM do? — Ian Rogers
дык от интернета не скроешься
I was a researcher working on the Jamaica project, designing future computer architectures, compilers, binary translators and operating systems. I have had research interests in network security, real-time network protocols and e-learning. I had a senior position working for Azul Systems, solving the design of virtual machines for server environments (you can get involved too!). I have recently joined the Android mobile group at Google.
http://www.cs.man.ac.uk/~irogers/
I was a researcher working on the Jamaica project, designing future computer architectures, compilers, binary translators and operating systems. I have had research interests in network security, real-time network protocols and e-learning. I had a senior position working for Azul Systems, solving the design of virtual machines for server environments (you can get involved too!). I have recently joined the Android mobile group at Google.
http://www.cs.man.ac.uk/~irogers/
Don't code today what you can't debug tomorrow.
-
- Уже с Приветом
- Posts: 2305
- Joined: 14 Apr 1999 09:01
- Location: Ural->CA
Re: JVM internals - what does the JVM do? — Ian Rogers
Вот еше статейка http://blog.redfin.com/devblog/2012/06/ ... edfin.html
Alcohol, Tobacco, Firearms, and Explosives. The makings of a great weekend in West Virginia!
-
- Уже с Приветом
- Posts: 9035
- Joined: 25 Oct 2011 19:02
- Location: SVO->ORD->SFO
Re: JVM internals - what does the JVM do? — Ian Rogers
Та нет.[/quote]crypto5 wrote: Жабисты на этой почве сильно больше страдают.
Да да. Сколько с Жабистами общаюсь, разговор об одном.
-
- Уже с Приветом
- Posts: 24375
- Joined: 18 Nov 2003 16:42
JVM internals - what does the JVM do? — Ian Rogers
а больше пижониться не о чем. Бьюсь на спор что 99% обсуждающих ни разу не пострадали фатально от этих "провалов". Одиночный OOM и настройка GC не в счёт.dotcom wrote:Да да. Сколько с Жабистами общаюсь, разговор об одном.crypto5 wrote:Та нет.dotcom wrote: Жабисты на этой почве сильно больше страдают.
Don't code today what you can't debug tomorrow.
-
- Уже с Приветом
- Posts: 6969
- Joined: 26 Feb 2011 17:40
Re: JVM internals - what does the JVM do? — Ian Rogers
Ну можно пойти дальше в пижонстве, и начатьт рассуждать о производительности JIT, и как его оптимизировать
-
- Уже с Приветом
- Posts: 4637
- Joined: 24 Oct 2009 01:38
- Location: Chicago ;-) -> SFBA!
Re: JVM internals - what does the JVM do? — Ian Rogers
У джавистов с которыми вы общаетесь возможно и много проблем с выделением памяти.dotcom wrote:Да да. Сколько с Жабистами общаюсь, разговор об одном.crypto5 wrote:Та нет.dotcom wrote: Жабисты на этой почве сильно больше страдают.
In vino Veritas!
-
- Уже с Приветом
- Posts: 13684
- Joined: 16 Jan 2001 10:01
Re: JVM internals - what does the JVM do? — Ian Rogers
Главный источник мучений - memory leaks проявляющиеся неожиданным образом. Особенно когда они загоняют GC в vicious cycle и он продолжает молотить даже когда нагрузка спала.rzen wrote: а больше пижониться не о чем. Бьюсь на спор что 99% обсуждающих ни разу не пострадали фатально от этих "провалов". Одиночный OOM и настройка GC не в счёт.
Но с другой стороны - приложение работает, просто ест CPU больше чем надо...
Как говорил Иван Васильевич - "Чего же тебе ещё надо, собака?!"
-
- Уже с Приветом
- Posts: 6969
- Joined: 26 Feb 2011 17:40
Re: JVM internals - what does the JVM do? — Ian Rogers
Ну если приложение (CPU) проводит в GC больше чем какой то процент времени (скажем 95), то JVM выкинет OOM, даже если память на самом деле под запрашиваемые аллокации есть.
-
- Уже с Приветом
- Posts: 9035
- Joined: 25 Oct 2011 19:02
- Location: SVO->ORD->SFO
Re: JVM internals - what does the JVM do? — Ian Rogers
Я не виноват, они сами жалуются. Помню в 95-96-м годах я очень сильно удивился, когда тестовые аппы с UI'ем повисали неожиданно после нажатия кнопочки. Оказалось, что GC работает в этот момент. UI Thread типа засыпал и тут включался GC... А выключаться быстро он не умел.crypto5 wrote: У джавистов с которыми вы общаетесь возможно и много проблем с выделением памяти.
Как оно началось через пень в первой версии, так и до сих пор несмотря на все извращения и оптимизации все также неэффективна из коробки. Что ни программа, то первым делом она выделяет большой массив при запуске, чтобы не жрать лишней памяти и избавиться от GC overhead'а. Ну и кастомных менджеров для Жабы по-моему уже на порядок больше, чем для C/C++.
Прикол то в том, что Гослинг хотел освободить разработчиков от манипуляций с памятью, а получилось то все задом наперед. Хорошему разработчику приходится знать кучу всякого ненуженого хлама типа этого:
http://www.ibm.com/developerworks/java/ ... index.html
За 17 лет активного C/C++ с кастомным менджментом памяти я сталкивался серьезно только раз. Остальные случаи относились к рабочим моментам, когда надо было выравнивать байтики для железа или подгонять совместимость библиотек.
-
- Уже с Приветом
- Posts: 9035
- Joined: 25 Oct 2011 19:02
- Location: SVO->ORD->SFO
Re: JVM internals - what does the JVM do? — Ian Rogers
Да нет, не только пижонство. Когда люди строят большие сервисы и становится дорого добавлять железо, начинают подумывать, а почему оно так дорого получается.rzen wrote: а больше пижониться не о чем. Бьюсь на спор что 99% обсуждающих ни разу не пострадали фатально от этих "провалов". Одиночный OOM и настройка GC не в счёт.
-
- Уже с Приветом
- Posts: 4637
- Joined: 24 Oct 2009 01:38
- Location: Chicago ;-) -> SFBA!
Re: JVM internals - what does the JVM do? — Ian Rogers
Ну за 17 лет кое что таки изменилосьdotcom wrote:Я не виноват, они сами жалуются. Помню в 95-96-м годахcrypto5 wrote: У джавистов с которыми вы общаетесь возможно и много проблем с выделением памяти.
Что ни программа, то первым делом она выделяет большой массив при запуске, чтобы не жрать лишней памяти и избавиться от GC overhead'а. [/quote]
А я вот ни одной такой программы не знаю, более того, совсем не представляю как выделение памяти upfront может помочь с "не жрать лишней памяти и избавиться от GC overhead'а"
In vino Veritas!
-
- Уже с Приветом
- Posts: 9035
- Joined: 25 Oct 2011 19:02
- Location: SVO->ORD->SFO
Re: JVM internals - what does the JVM do? — Ian Rogers
Пропадет хороший человек в этом бардаке.rzen wrote:Azul Systems, solving the design of virtual machines for server environments (you can get involved too!). I have recently joined the Android mobile group at Google.
-
- Уже с Приветом
- Posts: 9035
- Joined: 25 Oct 2011 19:02
- Location: SVO->ORD->SFO
Re: JVM internals - what does the JVM do? — Ian Rogers
Что за 17 лет изменилось - я неплохо знаю. Не отлично, но как-то отслеживаю. Но у вас опыт сильно поменьше, на сколько я понял, поэтому историю этого грустного вопроса и метаний архитектуры JVM от встроенных приложений до Java процессоров, а потом прямиком в JEE вы видимо не знаете. История дает ответы на многие вопросы, в том числе и почему memory manager не экономит на metadata, почему GC так intrusive и.т.п. Что касательно выделения большого куска память про запас, то я удивлен. Memory fragmentation - одна из главных проблем менджера.crypto5 wrote: А я вот ни одной такой программы не знаю, более того, совсем не представляю как выделение памяти upfront может помочь с "не жрать лишней памяти и избавиться от GC overhead'а"
-
- Уже с Приветом
- Posts: 24375
- Joined: 18 Nov 2003 16:42
JVM internals - what does the JVM do? — Ian Rogers
имелись ввиду страдания по GC здесь в этом топике. И я тут первый страдал, но _реально_ в жизни неудобств на самом деле не встречаю. Старые версии джавы не в счет.dotcom wrote:Да нет, не только пижонство. Когда люди строят большие сервисы и становится дорого добавлять железо, начинают подумывать, а почему оно так дорого получается.rzen wrote: а больше пижониться не о чем. Бьюсь на спор что 99% обсуждающих ни разу не пострадали фатально от этих "провалов". Одиночный OOM и настройка GC не в счёт.
У компилятора джавы изрядное преимущество перед тем же C++. например он может _динамически_ собирать статистику по переходом с тем чтобы пере компилировать код налету с более удачным с точки зрения предсказателя переходов кодом. В итоге ваш код через сутки использования может ускориться в разы, а у C++ такой возможности нет, компиляция статическая.
Don't code today what you can't debug tomorrow.
-
- Уже с Приветом
- Posts: 4637
- Joined: 24 Oct 2009 01:38
- Location: Chicago ;-) -> SFBA!
Re: JVM internals - what does the JVM do? — Ian Rogers
Все может быть, но я все равно придерживаюсь мнения что ситуация с GC сейчас и 17 лет назад - это две большие разницы, и некоректно приводить столь давний опыт в качестве какого либо аргумента.dotcom wrote:Что за 17 лет изменилось - я неплохо знаю. Не отлично, но как-то отслеживаю. Но у вас опыт сильно поменьше, на сколько я понял, поэтому историю этого грустного вопроса и метаний архитектуры JVM от встроенных приложений до Java процессоров, а потом прямиком в JEE вы видимо не знаете. История дает ответы на многие вопросы, в том числе и почему memory manager не экономит на metadata, почему GC так intrusive и.т.п.crypto5 wrote: А я вот ни одной такой программы не знаю, более того, совсем не представляю как выделение памяти upfront может помочь с "не жрать лишней памяти и избавиться от GC overhead'а"
Ок, предположим, хотя пока что не встречал что бы кто-то таким заморачивался, а в ц++ с этим как то по другому дела обстоят?Что касательно выделения большого куска память про запас, то я удивлен. Memory fragmentation - одна из главных проблем менджера.
In vino Veritas!
-
- Уже с Приветом
- Posts: 9035
- Joined: 25 Oct 2011 19:02
- Location: SVO->ORD->SFO
Re: JVM internals - what does the JVM do? — Ian Rogers
Уважаемые, я разве я пытался поднять флейм C++ vs Java? Memory management как его не реализовывай, всегда будет иметь overhead. В Java много мета-данных засовывается рядом с самими данными, GC intrusive, к нему нет нормального API'я, чтобы давать подсказки. Нет стандартаного API и к самому JVM. Hotspot, а потом и оптимизатор для него, который вы упомянули выше, появился еще во второй Жабе. Я помню hype вокруг него оч-чень хорошо. После его появления я забросил свои доморощенные попытки написать что-то на Жабе окончательно. Кто-нибудь еще помнит IDE конца 90-х? JBuilder? У-у-ух! Скоростная штука была!
Во-первых, статистику как бы он не собирал, прирост производительности происходит по сравнению с аналогичной статитческой оптимизацией только в частных случаях. Я, к сожалению, не могу выложить публично реферат, который у нас делал человек, савнивая алгоритмы обработки изображений на Java vs Intel IPP, но разница в производительности была не на порядок лучше у последнего, а на два порядка! Кстати, профайлер показал, что чуть больше половины производительности на x86 терялось в JVM, а остальное - это memory management. Надеюсь, что результаты все-таки опубликуют, чтобы больше на конкретики разговаривать.
Во-первых, статистику как бы он не собирал, прирост производительности происходит по сравнению с аналогичной статитческой оптимизацией только в частных случаях. Я, к сожалению, не могу выложить публично реферат, который у нас делал человек, савнивая алгоритмы обработки изображений на Java vs Intel IPP, но разница в производительности была не на порядок лучше у последнего, а на два порядка! Кстати, профайлер показал, что чуть больше половины производительности на x86 терялось в JVM, а остальное - это memory management. Надеюсь, что результаты все-таки опубликуют, чтобы больше на конкретики разговаривать.
-
- Уже с Приветом
- Posts: 4637
- Joined: 24 Oct 2009 01:38
- Location: Chicago ;-) -> SFBA!
Re: JVM internals - what does the JVM do? — Ian Rogers
Ну вы сами написали что у ц++ програм/программистов проблем с памятью меньше, вот и интересно узнать почему.dotcom wrote:Уважаемые, я разве я пытался поднять флейм C++ vs Java?
Если речь о хотспот, то его основная заслуга вроде как что он может на основе статистики о вызове методов инлайнить виртуальные вызовы, чего ц++ теоретически не может сделать, и выигрышь вполне очевиденВо-первых, статистику как бы он не собирал, прирост производительности происходит по сравнению с аналогичной статитческой оптимизацией только в частных случаях.
Это все возможно не из-за памяти или хотспот, а из за того что в джаве медленные операции над матрицами и масивами, почему точно не знаю, может компилер плохо векторизирует операции, а может джава все время границы масива проверяетЯ, к сожалению, не могу выложить публично реферат, который у нас делал человек, савнивая алгоритмы обработки изображений на Java vs Intel IPP, но разница в производительности была не на порядок лучше у последнего, а на два порядка!
In vino Veritas!
-
- Уже с Приветом
- Posts: 12017
- Joined: 08 Sep 2006 20:07
- Location: Силиконка
Re: JVM internals - what does the JVM do? — Ian Rogers
Я что, кто-то это на Java пишет?dotcom wrote:алгоритмы обработки изображений на Java vs Intel IPP
А вообще, я не Жабе не писал, но выскажусь
ИМХО - кесарю-кесарево, нефиг сравнивать Java c С++, вообще. Если Java хоть немного похожа на .NET, то она интересна именно как инфраструктура - я имею в виду JVM, самодостаточные файлы классов (с метаданными), и т.д. Это всю делает её подходящей для всякого enterprisey программирования и т.д.
А вот как язык она полностью убога. Т.е. проблема не в GC overhead (если ваше приложение так критично к этому, то нефиг вообще managed code писать), а в том, что язык слишком низкого уровня, слишком многословен. Way to go - более высокоуровневые языки для JVM.
Мир Украине. Свободу России.
-
- Уже с Приветом
- Posts: 6969
- Joined: 26 Feb 2011 17:40
Re: JVM internals - what does the JVM do? — Ian Rogers
Ох, чую, понесется сейчас.M. Ridcully wrote:Я что, кто-то это на Java пишет?dotcom wrote:алгоритмы обработки изображений на Java vs Intel IPP
А вообще, я не Жабе не писал, но выскажусь
ИМХО - кесарю-кесарево, нефиг сравнивать Java c С++, вообще. Если Java хоть немного похожа на .NET, то она интересна именно как инфраструктура - я имею в виду JVM, самодостаточные файлы классов (с метаданными), и т.д. Это всю делает её подходящей для всякого enterprisey программирования и т.д.
А вот как язык она полностью убога. Т.е. проблема не в GC overhead (если ваше приложение так критично к этому, то нефиг вообще managed code писать), а в том, что язык слишком низкого уровня, слишком многословен. Way to go - более высокоуровневые языки для JVM.
-
- Уже с Приветом
- Posts: 4637
- Joined: 24 Oct 2009 01:38
- Location: Chicago ;-) -> SFBA!
Re: JVM internals - what does the JVM do? — Ian Rogers
Мысля правильная, только более прогресивных языков более менее поддерживаемых индустрией и средствами разработки пока что не видно.Zorkus wrote:Ох, чую, понесется сейчас.M. Ridcully wrote:Я что, кто-то это на Java пишет?dotcom wrote:алгоритмы обработки изображений на Java vs Intel IPP
А вообще, я не Жабе не писал, но выскажусь
ИМХО - кесарю-кесарево, нефиг сравнивать Java c С++, вообще. Если Java хоть немного похожа на .NET, то она интересна именно как инфраструктура - я имею в виду JVM, самодостаточные файлы классов (с метаданными), и т.д. Это всю делает её подходящей для всякого enterprisey программирования и т.д.
А вот как язык она полностью убога. Т.е. проблема не в GC overhead (если ваше приложение так критично к этому, то нефиг вообще managed code писать), а в том, что язык слишком низкого уровня, слишком многословен. Way to go - более высокоуровневые языки для JVM.
In vino Veritas!
-
- Уже с Приветом
- Posts: 17281
- Joined: 07 Sep 2011 10:05
- Location: Seattle, WA
Re: JVM internals - what does the JVM do? — Ian Rogers
Доля правды в этом есть. Например, по сравнению с тем же C# (если как язык сравнивать) или cо Scala (который JVM). Оба конкретно опережают Java по выразительности. К сожалению приходится признать, что Java довольно медленно эволюционирует. Не зря приходится пользоваться костылями вроде http://projectlombok.org/ (даже на коммерческих проектах).Zorkus wrote: Ох, чую, понесется сейчас.