2

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

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

4

3 回答 3

2

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

于 2013-09-24T09:50:54.070 回答
2

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

于 2013-09-25T07:32:01.150 回答
-1

不,Java 应用程序不能超出-Xmx. 如果可以,那就没有多大意义了——那么,为什么-Xmx首先要费心呢?

我在 Dream.In.Code上发现了一个有趣的链接,其中用户给出了一个程序示例,该程序设法调整自身大小,但它通过产生一个新的 JVM 进程来工作。

于 2013-09-24T09:47:41.073 回答