java应用程序可以分配比jvm启动参数指定的内存更多的内存吗?

时间:2013-09-24 09:35:42

标签: java memory-management jvm jvm-arguments

假设java应用程序没有使用任何本机库。 有没有办法可以分配比jvm启动参数指定的内存更多的内存?

反过来问:我可以依赖java应用程序永远不会分配比JVM启动参数更多的内存吗?

3 个答案:

答案 0 :(得分:2)

是的,它可以。它无法在JVM堆上分配更多内存,但可以使用ByteBuffer.allocateDirect或通过调用自定义本机代码来分配本机内存。

答案 1 :(得分:2)

实际上,您总是需要比启动脚本中指定的-Xmx更多的内存。 GC内部,JIT优化表,堆堆分配,permgen,线程堆栈等都会造成损失。

答案 2 :(得分:-1)

不,Java应用程序不能超出-Xmx指定的大小。如果可能的话也没有多大意义 - 为什么首先要考虑-Xmx呢?

我找到了一个有趣的link on Dream.In.Code,其中一个用户给出了一个程序的例子,该程序设法调整自身的大小,但它通过产生一个新的JVM进程来工作。

相关问题