Java вне кучи памяти и огромных страниц

При выделении памяти вне кучи в Java (через прямые буферы или собственный код JNI, например) будет ли выделенная память поддерживаться огромными страницами, если JVM использует -XX: + UseLargePages?


person user36568    schedule 06.01.2020    source источник


Ответы (1)


Нет, JVM HotSpot использует простой вызов libc malloc для выделения памяти для прямого байтового буфера.

Однако, если вы замените стандартный системный распределитель, например, jemalloc, вы сможете настройте malloc для использования огромных страниц, когда они доступны.

Другой вариант использования огромных страниц для прямых ByteBuffers - это создание файла на hugetlbfs файловой системы, а затем сопоставьте ее в Java как _ 2_.

person apangin    schedule 07.01.2020
comment
Я предполагаю, что использование libhugetlbfs для перегрузки поведения malloc при расширении кучи было бы другим вариантом? Будет ли это решение или jemalloc one работать для вызовов malloc, выполняемых через JNI? - person user36568; 09.01.2020
comment
@ user36568 Верно, libhugetlbfs тоже подойдет. Он будет работать как для прямых ByteBuffers, так и для других вызовов malloc в коде JNI. - person apangin; 12.01.2020