我正在尝试在 Mac OS X 上更改 Java 的最大内存大小“堆”。我已经阅读了很多地方来更改“-XX:MaxPermSize”,但我找不到该文件,也不知道在哪里进行更改环境。
5 回答
您可以使用以下参数设置 java VM 可用的内存:
-Xms64m -Xmx200m
-Xms 指定最小内存;-Xmx 最大值。
您必须在运行应用程序时指定它们。例如,如果你有一个名为 app.jar 的 jar,你可以输入运行它
java -Xms64m -Xmx512m -jar app.jar
我认为在 32 位机器上你不能给 JVM 超过 1Gb。
我正在使用 WEKA,我遇到了同样的问题。在这里,我找到了解决方案,而且很容易。
转到应用程序==> 左键单击特定应用程序(如 Weka)==> 显示包内容==> 内容==>Info.Plist==>Java==> VMOptions==> 根据需要增加内存大小(在我的 Mac 中默认为 1 Gb,我增加到 6 Gb)
-Xmx
使用switch设置最大堆大小。
-XX:MaxPermSize 用于指定 perm 生成的最大大小,它是总堆的子集
我试图在终端中运行一个带有非常大数组的 java 程序。它一直用完内存,但我通过增加每个线程允许的内存来解决问题:
$ java -Xss12G name
这里-Xss12G
告诉 java 运行时为每个线程分配 12Gb,然后运行name
. 同样-Xss4G
,每个线程使用 4Gb。这$
是Terminal
控制台提示,可能会有文件夹和你的名字。
注意:如果您不使用线程,则分配内存以用于当前程序或正在运行的主线程。
通过在终端中编写命令java -X
,您将获得有关分配堆和线程内存的更多详细信息:
$ java -X
如果您从终端启动应用程序,您将在命令行上提供参数:
java -XX:MaxPermSize=128m ...
这与任何其他平台上的相同。
如果您需要为应用程序包设置此设置(即,看起来像常规的可双击 Mac 应用程序的 Java 应用程序),您需要编辑 info.plist 文件,该文件位于包内,通常不是可见的。
此页面包含有关如何为 IntelliJ 执行此操作的说明,但也适用于其他捆绑的 Mac Java 应用程序。