1.6 KiB
1.6 KiB
JEP 450 Даты релиза нет, но есть тестовые сборки Средний размер объекта 64 байта + 16 байт заголовок Лилипут предполагает, что мы уменьшим размер заголовка в 2 раза, в идеале в 4 раза
Mark Wod
- 2 младших бита отводят под состояние:
- GC Age (4 бита). Сколько сборок мусора пережил
- Не успел записать
- Не успел записать
Зачем?
- Экономия до 10% памяти
- Улучшение локальности памяти
- Ускорение
Сжимаем
- Уменьшаем ClassWord
- Еще в JDK 6 сжали указатели
- JDK 15. Сжатие указателей на класс можно включить независимо
- Лилипут: Всегда используем сжатие
- Уменьшаем MarkWord
- 25 неиспользуемых битов отбрасываем
- Неиспользуемый бит между GC Age и Identity Hash Code
- Identity Hash Code - 25 бит
Планы на будущее
- Сократить identity hash code до 2 бит в заголовке
- Сократить указатель на класс до 23 бит
- Хранить forwarding pointer в старом теле объекта
Как попробовать
Есть сборка у амазона, необходимо указать два флага. Есть сборка от Шипилева.