如何使用命令行为JAVA分配空间[重复]

Posted

技术标签:

【中文标题】如何使用命令行为JAVA分配空间[重复]【英文标题】:How to allocate space to JAVA using command line [duplicate] 【发布时间】:2014-01-09 23:25:08 【问题描述】:

我在将大型数据集加载到 Jena 时遇到了堆错误。 `有什么方法可以给 JVM(Java) 分配一个大的堆空间。

我知道我可以通过对 eclipse.ini 进行更改来实现这一点。但是有什么方法可以让我在 linux 中使用命令行增加 Java 堆大小(我使用 64GB RAM 服务器:运行 12.04 Ubuntu LTS 服务器)?

由于堆空间较少,我得到的错误是:超出线程主 gc 开销限制中的异常。

另外,我如何找到可以为我的系统设置的最大堆空间量

我尝试了 export JAVA_OPTS= -Xms4096m -Xmx4096m 但最终得到了错误: bash:导出:-Xms4096m': not a valid identifier bash: export:-Xmx4096m':不是有效的标识符

【问题讨论】:

研究XmxXms选项 @JarrodRoberson 我试过但通过 JVM_OPTIONS 设置它们对我不起作用。另外,我怎样才能找到可以为我的系统设置的最大堆空间量。非常感谢您的回复...我在发布问题之前阅读了该帖子..但由于我是 linux 的新手..我没有得到太多 这种信息很容易用任何搜索引擎找到。 @Leo Ya 我试过了...但作为一个新手我无法理解很多 @AliceEverett 您可以尝试在 bash 提示符下运行命令 free 【参考方案1】:

试试(注意引号不是可选的两个单词)

export JAVA_OPTS="-Xms4096m -Xmx4096m"

或者,甚至

export MIN="4096m" # <-- Those quotes are (one word).
export MAX="4096m"
export JAVA_OPTS="-Xms$MIN -Xmx$MAX" # <-- single quotes would break variable expansion

【讨论】:

我有 64 GB RAM..如果我为 Java 堆空间分配 16GB RAM 可以吗 @AliceEverett 测试一下,但我可能会更高...(取决于我在做什么)... export JAVA_OPTS="-Xms4096m -Xmx4096"..signify..我只是有点好奇..非常感谢到目前为止的帮助 @AliceEverett 兆字节... export JAVA_OPTS="-Xms4096m -Xmx4096"中-Xmx4096后是否应该有m【参考方案2】:
java -Xms4096m -Xmx4096m [YourAppHere]

此命令将在开始时分配 4GB(或 4096 MB)的堆内存(-Xms4096m 选项),并且最大堆内存大小为 4GB(-Xmx4096m 选项)。

显然,您可以将数字更改为您想要的任何大小。如果计算机必须增加内存大小会产生开销(每次增加内存大小时,分配都会加倍)所以如果你有那么多内存,你最好在应用程序的开头分配它。

【讨论】:

[YourAppHere] 表示什么。也感谢您的回答:) 你正在运行的java文件 实际上我正在运行 java 字节码(即 C++ 的可执行等效项)..我可以在这里指定可执行文件名称 还有一种方法可以让我在一段时间内永久设置java堆大小 java 总是作为字节码运行,无论是刚刚编译的还是压缩到 jar 中。 Java 在虚拟机上运行,​​并且只理解专门为它制作的字节码。这些命令会将堆大小设置为您想要的任何值,并且只要应用程序正在运行,它就会保持不变。如果您需要快捷方式,请编写一个调用该命令的 sh 脚本,而不是每次都键入它

以上是关于如何使用命令行为JAVA分配空间[重复]的主要内容,如果未能解决你的问题,请参考以下文章

对于已预先分配的虚拟机硬盘,如何压缩或者减小其所占空间

java程序是在编译的时候分配空间的吗,如果不是那程序在啥时候给变量分配内存空间?

为可选的弹性项目分配空间[重复]

ubuntu12.04如何给未分配空间创建新分区并且挂载上呢?

如何监控linux阿里云磁盘空间

如何查找“进程”占用的大小/内存空间[重复]