При выделении памяти вне кучи в Java (через прямые буферы или собственный код JNI, например) будет ли выделенная память поддерживаться огромными страницами, если JVM использует -XX: + UseLargePages?
Java вне кучи памяти и огромных страниц
Ответы (1)
Нет, JVM HotSpot использует простой вызов libc malloc
для выделения памяти для прямого байтового буфера.
Однако, если вы замените стандартный системный распределитель, например, jemalloc, вы сможете настройте malloc для использования огромных страниц, когда они доступны.
Другой вариант использования огромных страниц для прямых ByteBuffers - это создание файла на hugetlbfs файловой системы, а затем сопоставьте ее в Java как _ 2_.
person
apangin
schedule
07.01.2020
Я предполагаю, что использование libhugetlbfs для перегрузки поведения malloc при расширении кучи было бы другим вариантом? Будет ли это решение или jemalloc one работать для вызовов malloc, выполняемых через JNI?
- person user36568; 09.01.2020
@ user36568 Верно, libhugetlbfs тоже подойдет. Он будет работать как для прямых ByteBuffers, так и для других вызовов malloc в коде JNI.
- person apangin; 12.01.2020