java - 我可以分配多少内存?

标签 java memory ram

如果我的机器上有 16 GB 的 RAM,我可以为正在执行的 Java 命令行程序分配多少内存?我假设 java -Xmx 16g... 会使我的系统崩溃?

编辑:
鉴于评论,我尝试了 java -Xmx16g...,但它并没有使我的机器崩溃。该程序仍然内存不足。我尝试了 java -Xmx32g...,它确实让我的机器崩溃了。

从下面的评论(非常有启发性)来看,我想我只需要继续尝试分配。

最佳答案

虚拟机的堆内存大小由选项-Xms控制 和 - Xmx

第一个指定初始堆大小,第二个指定最大大小。

分配是在 JVM 本身 内完成的,而不是在 OS 上完成的。当需要更多内存时,JVM 会分配一 block 内存,直到达到 Xmx。

如果您需要更多,则会抛出 OutOfMemoryError。

XmsXmx 通常使用相同的值, 导致虚拟机仅在执行开始时在操作系统中分配内存, 不依赖于操作系统特定行为


在你的情况下,由于你将 32g 设置为你的 Xmx 并且你的系统崩溃了,看来你没有这个内存(交换 + 内存 ram)

如果您手动更改系统的虚拟内存大小,配置将起作用。

关于java - 我可以分配多少内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21583575/

相关文章:

无限循环内的 Java 对象创建

java - 如何让循环更有效率?

r - 如何在程序 R 中剪辑大型形状文件而不导致计算机崩溃?

ios - 将大文件下载到 iphone 会填满 ram 内存 - xcode

java - 我如何返回 jsp 作为此 servlet 的响应?

java - 调用rest api时,无论使用lomboks @Data,方法都是未定义的

android - Android Honeycomb 中的 Bitmap#recycle() 实际上做了什么?

c++ - 在没有 DOS、Windows、Linux 的情况下在引导中查找内存大小

c++ - 是什么让一种语言不愿意/不能包含 RAII?

python - 将 python 中的递归深度增加到 100000