digital-garden/knowledge/dev/java/Лилипут.md
2024-06-13 21:01:37 +03:00

31 lines
1.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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 в старом теле объекта
## Как попробовать
Есть сборка у амазона, необходимо указать два флага. Есть сборка от Шипилева.