Java不安全的内存分配限制

时间:2015-02-23 09:39:51

标签: java

Java sun Unsafe.allocateMemory有任何限制吗?我知道它不在堆中,所以它不受GC影响。但是我们可以通过JVM命令限制分配大小,如:

-XX:MaxDirectMemorySize

1 个答案:

答案 0 :(得分:3)

Unsafe#allocateMemory方法是原生的,native implementation of Unsafe#allocateMemory直接调用os::malloc,将分配工作委托给底层系统。有一些簿记和一些调试选项,但似乎没有内置机制来限制分配大小。

根据应用案例,您可以考虑将Unsafe#allocateMemory调用包装到自己的方法中,根据您的建议检查基于命令行参数的大小限制。

如果您打算阻止第三方库(内部使用Unsafe#allocateMemory)分配太多内存,我认为没有合理的方法来实现这一目标。