Повышение производительности Java Hotspot VM: сжатые нулевые указатели на обычные объекты

Когда JVM использует сжатые обычные указатели объектов (oops) в 64-разрядном процессе JVM, программное обеспечение JVM отправляет запрос операционной системе на резервирование памяти для кучи Java, начиная с нулевого виртуального адреса. Если операционная система поддерживает такой запрос и может зарезервировать память для кучи Java по нулевому виртуальному адресу, то используются сжатые значения, основанные на нуле.

Когда используются сжатые значения, основанные на нуле, 64-битный указатель может быть декодирован из 32-битного смещения объекта без включения базового адреса кучи Java. Для размеров кучи менее 4 гигабайт программное обеспечение JVM может использовать смещение байта вместо смещения объекта и, таким образом, также избежать масштабирования смещения на 8. Соответственно, эффективно кодирование 64-битного адреса в 32-битное смещение.

Для кучи Java размером до 26 гигабайт операционные системы Linux и Windows обычно могут выделять кучу Java по нулевому виртуальному адресу.


Читайте также:


Комментарии

Популярные сообщения из этого блога

Методы класса Object в Java

Как получить текущий timestamp в Java

Основные опции JVM для повышения производительности и отладки