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