为什么 java -Xmx 不起作用?

为什么 java -Xmx 不起作用?

可能重复:
VPS 上的 Linux 内存不足

在我的 Ubuntu 11.10 VPS 中,运行 jar 文件之前:

# free -m
             total       used       free     shared    buffers     cached
Mem:           256          5        250          0          0          0
-/+ buffers/cache:          5        250
Swap:            0          0          0

运行限制最大数量的 jar 文件3200 万记忆:

java -Xms8m -Xmx32m -jar ./my.jar

现在内存状态如下:

# free -m
             total       used       free     shared    buffers     cached
Mem:           256        155        100          0          0          0
-/+ buffers/cache:        155        100
Swap:            0          0          0

这个罐子占据了1.5亿记忆。

我无法运行任何其他 java 命令:

# java -version
Error occurred during initialization of VM
Could not reserve enough space for object heap
Could not create the Java virtual machine.

# java -Xmx8m -version  
Error occurred during initialization of VM
Could not reserve enough space for object heap
Could not create the Java virtual machine.

我想知道为什么-Xmx参数没有生效?

如何限制jar文件使用的内存?

答案1

-Xmx参数定义堆大小,也就是您可以在程序中分配的内存。java二进制文件和加载的jar文件自然都需要额外的空间。

答案2

并不是 Java 耗尽了所有的内存,系统也消耗了 RAM 来缓存数据(查看 和 的缓存free -m输出top

你在 256MB RAM VPS 上运行 Java(臃肿的软件)无交换。 你真的真的你确定要走这条路吗?

相关内容