У нас есть платформа, которая сильно зависит от памяти вне кучи в JVM. Мы заметили, что время от времени мы получаем SIGSEGV во время цикла GC: * 1001 *
V [libjvm.so+0x5c56cf] G1ParScanThreadState::copy_to_survivor_space(InCSetState, oopDesc*, markOopDesc*)+0x4bf
Я полностью понимаю, что их довольно сложно отследить, но мы начали сужать основной случай.
Вопрос:
Если я это сделаю:
base = unsafe.allocateMemory(capacity);
и, очевидно, сохранить base
для последующего освобождения, может (каким-либо образом) GC вмешаться и выбрать, чтобы переместить мою родную память?
Я знаю, что GC не должен влиять на этот тип памяти, но я ищу какой-то авторитетный ответ на этот вопрос.