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