Java sun Unsafe.allocateMemory
有任何限制吗?我知道它不在堆中,所以它不受GC影响。但是我们可以通过JVM命令限制分配大小,如:
-XX:MaxDirectMemorySize
答案 0 :(得分:3)
Unsafe#allocateMemory方法是原生的,native implementation of Unsafe#allocateMemory直接调用os::malloc,将分配工作委托给底层系统。有一些簿记和一些调试选项,但似乎没有内置机制来限制分配大小。
根据应用案例,您可以考虑将Unsafe#allocateMemory
调用包装到自己的方法中,根据您的建议检查基于命令行参数的大小限制。
如果您打算阻止第三方库(内部使用Unsafe#allocateMemory
)分配太多内存,我认为没有合理的方法来实现这一目标。