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