15

我正在尝试在 Mac OS X 上更改 Java 的最大内存大小“堆”。我已经阅读了很多地方来更改“-XX:MaxPermSize”,但我找不到该文件,也不知道在哪里进行更改环境。

4

5 回答 5

13

您可以使用以下参数设置 java VM 可用的内存:

-Xms64m -Xmx200m

-Xms 指定最小内存;-Xmx 最大值。

您必须在运行应用程序时指定它们。例如,如果你有一个名为 app.jar 的 jar,你可以输入运行它

java -Xms64m -Xmx512m -jar app.jar

我认为在 32 位机器上你不能给 JVM 超过 1Gb。

于 2012-06-04T20:08:54.750 回答
10

我正在使用 WEKA,我遇到了同样的问题。在这里,我找到了解决方案,而且很容易。

转到应用程序==> 左键单击特定应用程序(如 Weka)==> 显示包内容==> 内容==>Info.Plist==>Java==> VMOptions==> 根据需要增加内存大小(在我的 Mac 中默认为 1 Gb,我增加到 6 Gb)

于 2013-11-21T18:41:05.950 回答
2

-Xmx使用switch设置最大堆大小。

-XX:MaxPermSize 用于指定 perm 生成的最大大小,它是总堆的子集

于 2012-06-04T20:02:02.060 回答
2

我试图在终端中运行一个带有非常大数组的 java 程序。它一直用完内存,但我通过增加每个线程允许的内存来解决问题:

$ java -Xss12G name

这里-Xss12G告诉 java 运行时为每个线程分配 12Gb,然后运行name​​. 同样-Xss4G,每个线程使用 4Gb。这$Terminal控制台提示,可能会有文件夹和你的名字。

注意:如果您不使用线程,则分配内存以用于当前程序或正在运行的主线程。

通过在终端中编写命令java -X,您将获得有关分配堆和线程内存的更多详细信息:

$ java -X
于 2016-02-15T13:22:45.333 回答
1

如果您从终端启动应用程序,您将在命令行上提供参数:

java -XX:MaxPermSize=128m ...

这与任何其他平台上的相同。

如果您需要为应用程序包设置此设置(即,看起来像常规的可双击 Mac 应用程序的 Java 应用程序),您需要编辑 info.plist 文件,该文件位于包内,通常不是可见的。

此页面包含有关如何为 IntelliJ 执行此操作的说明,但也适用于其他捆绑的 Mac Java 应用程序。

于 2012-06-04T20:11:41.907 回答