Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java应用程序能否分配比jvm启动参数指定的内存更多的内存?_Java_Memory Management_Jvm_Jvm Arguments - Fatal编程技术网

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

java应用程序能否分配比jvm启动参数指定的内存更多的内存?,java,memory-management,jvm,jvm-arguments,Java,Memory Management,Jvm,Jvm Arguments,假设java应用程序未使用任何本机库。 有没有一种方法可以让它分配比jvm启动参数指定的更多的内存 反过来问:我能相信java应用程序永远不会分配超过JVM启动参数限制的内存吗 否,Java应用程序不能超过-Xmx指定的大小。如果可以的话,那就没什么意义了——那么,为什么要麻烦先让-Xmx 我发现了一个有趣的例子,用户给出了一个程序的例子,该程序能够调整自身大小,但它通过生成一个新的JVM进程来工作。是的,它可以。它无法在JVM堆上分配更多内存,但它可以通过使用ByteBuffer.alloca

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


反过来问:我能相信java应用程序永远不会分配超过JVM启动参数限制的内存吗

否,Java应用程序不能超过
-Xmx
指定的大小。如果可以的话,那就没什么意义了——那么,为什么要麻烦先让
-Xmx


我发现了一个有趣的例子,用户给出了一个程序的例子,该程序能够调整自身大小,但它通过生成一个新的JVM进程来工作。

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

事实上,您总是需要比启动脚本中指定的-Xmx更多的内存。GC内部、JIT优化表、堆外分配、permgen、线程堆栈等都在付出代价

Java应用程序将始终使用超过参数定义的最大内存(堆大小)。例如,见: