我们有一个平台,严重依赖于JVM中的堆外内存。我们注意到,在GC周期期间,不时会出现SIGSEGV:
V [libjvm.so+0x5c56cf] G1ParScanThreadState::copy_to_survivor_space(InCSetState, oopDesc*, markOopDesc*)+0x4bf
我完全理解这些问题很难追踪,但我们已经开始缩小根本原因。
问题:
如果我执行:
base = unsafe.allocateMemory(capacity);
显然,要稍后释放base
,那么GC会不会以任何方式介入并选择移动我的本地内存呢?
我知道GC不应该对这种类型的内存产生影响,但我正在寻找某种权威的答案。