Netbeans内存溢出错误:Java堆空间,代码格式化

6
当我在NetBeans中格式化代码时,最近遇到了一个"OutOfMemoryError: Java heap space"错误。
我已经使用NetBeans超过两年时间了,而这个问题出现在我正在开发的典型机器上。目前是在XP机器上使用版本6.9,内存为4GB。我已经将-J-Xmx调整为1024m,甚至尝试了2048m,但仍然出现错误。
这是一个很小的PHP脚本,不到100行。过去我曾经格式化过10,000多行的代码,并且没有修改-J-Xmx或任何其他东西。我没有运行任何代码、调试或单元测试等操作,只是使用了内置的Source->Format功能。
我已经尝试删除代码以查看是否有特定部分导致问题。根据我的观察,如果添加一个单一的控制结构,无论它包含什么,都会导致内存错误。
if($i == 1) {}

导致内存错误。如果我检查内存使用情况,Netbeans在使用所有可用内存时并没有任何问题。希望能得到任何关于此问题的帮助。

下面是当我遇到错误时生成的堆栈跟踪:

java.lang.OutOfMemoryError: Java heap space
    at org.netbeans.modules.php.editor.indent.FormatVisitor.addFormatToken(FormatVisitor.java:1002)
    at org.netbeans.modules.php.editor.indent.FormatVisitor.visit(FormatVisitor.java:859)
    at org.netbeans.modules.php.editor.parser.astnodes.Program.accept(Program.java:92)
    at org.netbeans.modules.php.editor.indent.TokenFormatter$1.run(TokenFormatter.java:354)
    at org.netbeans.editor.GuardedDocument.runAtomic(GuardedDocument.java:314)
    at org.netbeans.modules.php.editor.indent.TokenFormatter.reformat(TokenFormatter.java:344)
    at org.netbeans.modules.php.editor.indent.PHPFormatter.reformat(PHPFormatter.java:129)
    at org.netbeans.modules.csl.core.GsfReformatTask$1.run(GsfReformatTask.java:105)
    at org.netbeans.modules.parsing.api.ParserManager$UserTaskAction.run(ParserManager.java:154)
    at org.netbeans.modules.parsing.api.ParserManager$UserTaskAction.run(ParserManager.java:138)
    at org.netbeans.modules.parsing.impl.TaskProcessor$1.call(TaskProcessor.java:200)
    at org.netbeans.modules.parsing.impl.TaskProcessor$1.call(TaskProcessor.java:197)
    at org.netbeans.modules.masterfs.filebasedfs.utils.FileChangedManager.priorityIO(FileChangedManager.java:160)
    at org.netbeans.modules.masterfs.providers.ProvidedExtensions.priorityIO(ProvidedExtensions.java:227)
    at org.netbeans.modules.parsing.impl.Utilities.runPriorityIO(Utilities.java:66)
    at org.netbeans.modules.parsing.impl.TaskProcessor.runUserTask(TaskProcessor.java:197)
    at org.netbeans.modules.parsing.api.ParserManager.parse(ParserManager.java:106)
    at org.netbeans.modules.csl.core.GsfReformatTask.reformat(GsfReformatTask.java:95)
    at org.netbeans.modules.editor.indent.TaskHandler$MimeItem.runTask(TaskHandler.java:550)
    at org.netbeans.modules.editor.indent.TaskHandler.runTasks(TaskHandler.java:317)
    at org.netbeans.modules.editor.indent.IndentImpl.reformat(IndentImpl.java:320)
    at org.netbeans.modules.editor.indent.FormatterImpl.reformat(FormatterImpl.java:190)
    at org.netbeans.editor.ActionFactory$FormatAction$1$1.run(ActionFactory.java:1683)
    at org.netbeans.editor.GuardedDocument.runAtomicAsUser(GuardedDocument.java:344)
    at org.netbeans.editor.ActionFactory$FormatAction$1.run(ActionFactory.java:1651)
    at org.netbeans.modules.progress.ui.RunOffEDTImpl$1.run(RunOffEDTImpl.java:160)
    at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:1418)
    at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:1957)

看起来有很多类似的报告都涉及到了这个问题:http://statistics.netbeans.org/analytics/exception.do?id=472651 我安装了7.0b并重新安装了JRE 6...现在它可以正常工作了。在使用代码格式化时,6.9版本无法使用。但我仍然希望能够找出如何解决这个问题。

我刚遇到了这个问题!太生气了!你有没有找到任何想法是什么原因?还是我得重新安装每夜版本或7.0测试版? - zaf
我试用了7.0版本的夜间版,发现它比6.1或7b更加不稳定。目前可行的解决方案是完全卸载6.9版本和所有首选项,然后重新安装。这个过程很麻烦,尤其是如果你有很多保存的FTP配置文件,但是这个方法已经有效了。否则,打开现有项目非常容易。 - Jestep
1个回答

3

我发现了这个NetBeans错误,它报告了一个与你的问题类似的问题。原来这个问题与SVN有关,并通过清除一个SVN缓存目录得以解决。请阅读该错误的“评论”以获取详细信息。


检查了错误报告。svncache/文件夹中有3个完全空的文件,因此我不认为这是本情况的原因。 - Jestep
@Jestep - 这只是一个理论。你可以尝试通过谷歌搜索其他的错误报告等信息... - Stephen C

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接