Комментарии 8
Интересный разбор. Тема с экономией кучи всегда актуальна, особенно когда проект начинает упираться в лимиты памяти. Сравнивать с .NET тут напрашивается само собой через структуры и Memory, но подход HotSpot с Compact Object Headers на уровне рантайма выглядит очень элегантно.
У меня вопрос, есть ли уже наработки или замеры по тому, как это в реальности сказывается на времени пауз GC при высокой плотности объектов? Сильно ли проседает или, наоборот, выигрывает производительность?
Спасибо, да тема интересная.
По GC есть некоторые пробы, возможно как раз для одной из следующих статей материал будет. В теории должно выигрывать. Но да надо пробовать на реальном приложении и результаты могут удивить на некоторых профилях нагрузки.
Хороший обзор и полезное напоминание про вопросы экономии хипа в новых JVM, спасибо.
Интересно, в дополнение к расходу памяти для обычных/сжатых заголовков, кто-то уже делал с помощью JMH сравнение производительности чтения/записи в каких ни будь типовых структурах вроде HashMap/TreeSet/CHM/CSLM на относительно больших количествах - десятках/сотнях миллионов объектов? Очень любопытно, как сжатые заголовки влияют на производительность.
lock:2
Правильно ли я понимаю, что в заголовке каждого объекта два байта выделяются под возможное использование в качестве монитора, даже если объект таковым никогда не станет?

JDK 27 Compact Object Headers: как сбросить до 30% кучи без кроссфита и жестких диет