Java的不安全内存分配限制

3
< p >Java sun的Unsafe.allocateMemory有任何限制吗?我知道它是非堆内存,因此不受GC的影响。但是我们能否通过JVM命令限制分配大小,例如:

-XX:MaxDirectMemorySize
1个回答

4
Unsafe#allocateMemory 方法是本地方法,Unsafe#allocateMemory 的本地实现 直接调用 os::malloc 来分配内存,将分配工作委托给底层系统。虽然有一些簿记和调试选项,但似乎没有内置机制来限制分配大小。

根据应用程序的情况,您可以考虑将 Unsafe#allocateMemory 调用封装到自己的方法中,并基于命令行参数检查大小限制,就像您建议的那样。

如果您的意图是防止第三方库(其在内部使用 Unsafe#allocateMemory)分配过多的内存,则我认为没有合理的方法来实现这一点。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接