digital-garden/knowledge/dev/java/Лилипут.md

31 lines
1.6 KiB
Markdown
Raw Normal View History

2024-06-13 21:01:37 +03:00
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 в старом теле объекта
## Как попробовать
Есть сборка у амазона, необходимо указать два флага. Есть сборка от Шипилева.