33

我正在尝试在 netbeans 中的 java 中构建一个包含近 110000 个单词的词典树。我的代码运行良好,但它给出了一个异常,如下所示:

   Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOfRange(Arrays.java:3209)
at java.lang.String.<init>(String.java:215)
at java.nio.HeapCharBuffer.toString(HeapCharBuffer.java:542)
at java.nio.CharBuffer.toString(CharBuffer.java:1157)
at java.util.regex.Matcher.toMatchResult(Matcher.java:232)
at java.util.Scanner.match(Scanner.java:1270)
at java.util.Scanner.nextLine(Scanner.java:1517)
at lexiconbuild.model.Lexicon.<init>(Lexicon.java:29)
at lexiconbuild.model.LexiconBuild.main(LexiconBuild.java:17)
Java Result: 1

我想知道是否有人可以帮助我增加 netbeans 中的 java 堆空间。

4

3 回答 3

52

您可以在项目属性 -> 运行 -> VM 选项中的 NetBeans 中设置它

  1. 右键单击您的项目“属性
  2. 选择“运行”类别。
  3. 在“ VM 选项”文本框中输入您的参数 ( -Xmx512m )。

示例:在“VM 选项”文本框中输入 -Xmx512m 可为您的 Java 程序提供 512Mb 的最大堆大小。

于 2013-03-17T12:43:18.270 回答
39

如果你想为 netbeans 自己更改它,你可以从这个文件中更改它:

netbeans.conf 

您将在 /etc 下的 netbeans 文件夹中找到它

堆有两个参数

Xms - 堆的初始大小。

Xmx - 最大 Java 堆大小

它使用默认值,您只需在此处添加它并尝试将它们都添加。

并且不要忘记在更改 XMX 时将它们添加到 netbeans_default_options

-J-XX:+UseConcMarkSweepGC -J-XX:+CMSClassUnloadingEnabled -J-XX:+CMSPermGenSweepingEnabled

所以 netbeans_default_options 将是这样的:

netbeans_default_options="-J-client -J-Xss2m -J-Xms512m -J-Xmx1024m -J-XX:PermSize=256m -J-Dapple.laf.useScreenMenuBar=true -J-Dapple.awt.graphics.UseQuartz=true -J-Dsun.java2d.noddraw=true -J-Dsun.zip.disableMemoryMapping=true -J-XX:+UseConcMarkSweepGC -J-XX:+CMSClassUnloadingEnabled -J-XX:+CMSPermGenSweepingEnabled"
于 2013-03-17T13:02:33.917 回答
3

在运行配置中,您应该设置 Java VM 选项-Xmx512m或将 Java VM 的最大大小限制为 512M 的其他选项。您始终可以尝试其他值。您仅受操作系统使用的物理内存的限制。

于 2013-03-17T12:42:57.287 回答