在Mac OS X上更改Java的最大内存堆

时间:2012-06-04 19:59:36

标签: java macos scala

我正在尝试在Mac OS X上更改Java的最大内存大小“堆”。我已阅读了许多地方要更改“-XX:MaxPermSize”,但我找不到该文件但不知道在哪里改变那个设置。

5 个答案:

答案 0 :(得分:12)

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

-Xms64m -Xmx200m

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

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

java -Xms64m -Xmx512m -jar app.jar

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

答案 1 :(得分:8)

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

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

答案 2 :(得分:2)

使用-Xmx开关设置最大堆大小。

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

答案 3 :(得分:2)

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

$ java -Xss12G name

这里-Xss12G告诉java运行时为每个线程分配12Gb,然后运行name。类似地,-Xss4G每个线程使用4Gb。 $Terminal控制台提示符,可能包含文件夹和您的名字。

注意:如果您没有使用线程,那么您需要分配内存以用于当前程序或您正在运行的主线程。

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

$ java -X

答案 4 :(得分:1)

如果从终端启动应用程序,则需要在命令行中提供参数:

java -XX:MaxPermSize=128m ...

这与任何其他平台相同。

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

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