java.lang.OutOfMemoryError: Java heap space with NetBeans

这是我在 NetBeans 启动的 Tomcat servlet 容器实例中运行 Web 应用程序时遇到的错误。为了解决这个问题,我甚至更改了netbeans.conf中的堆大小,但它仍然显示相同的错误。如何防止这种情况发生?

HTTP Status 500 - 

--------------------------------------------------------------------------------

type Exception report

message 

description The server encountered an internal error () that prevented it from fulfilling this request.

exception 

javax.servlet.ServletException: Servlet execution threw an exception
    org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:362)


root cause 

java.lang.OutOfMemoryError: Java heap space

note The full stack trace of the root cause is available in the Apache Tomcat/5.5.9 logs.

答案 1

在 netbeans.conf 中更改堆大小只会更改 NetBeans 本身的堆,而不会更改通过 NetBeans 运行的应用程序的堆。

正确的方法是右键单击项目并选择“属性”,然后选择“运行”;在那里,您可以适当地设置VM选项(例如)。它应该看起来像这样:-Xmx256m

setting the heap size
(感谢VonC找到这张照片。


答案 2

停止 Tomcat 服务器,设置环境变量CATALINA_OPTS,然后重新启动 Tomcat。查看文件或此变量的用法。例如tomcat-install/bin/catalina.shcatalina.bat

set CATALINA_OPTS="-Xms512m -Xmx512m" (Windows)export CATALINA_OPTS="-Xms512m -Xmx512m" (ksh/bash)setenv CATALINA_OPTS "-Xms512m -Xmx512m" (tcsh/csh)

在 或 中,您可能已经注意到CATALINA_OPTS、JAVA_OPTS或两者都可用于指定 Tomcat JVM 选项。catalina.batcatallina.sh

CATALINA_OPTS和JAVA_OPTS有什么区别?

CATALINA_OPTS这个名字是特定于Tomcat servlet容器的,而JAVA_OPTS可以被其他java应用程序(例如,JBoss)使用。由于环境变量由所有应用程序共享,因此我们不希望Tomcat无意中选择用于其他应用程序的JVM选项。我更喜欢使用CATALINA_OPTS。

如何在JBoss中设置java堆大小?

停止 JBoss 服务器,编辑$JBOSS_HOME/bin/run.conf,然后重新启动 JBoss 服务器。您可以将带有JAVA_OPTS的行更改为如下所示:

JAVA_OPTS="-server -Xms128m -Xmx128m"

如何在 Eclipse 中设置 java 堆大小?您有 2 种选择:

  1. 编辑 eclipse-home/eclipse.ini如下所示,然后重新启动 Eclipse。

    -vmargs-Xms64m-Xmx256m

  2. 或者,您可以运行 eclipse 命令,并在最后使用其他选项。-vmargs 之后的任何内容都将被视为 JVM 选项,并直接传递到 JVM。以这种方式在命令行中指定的 JVM 选项将始终覆盖 eclipse.ini 中的选项。例如

    eclipse -vmargs -Xms64m -Xmx256m

如何在 NetBeans 中设置 java 堆大小?

退出 NetBeans,编辑文件 netbeans-install/etc/netbeans.conf。例如

netbeans_default_options="-J-Xms512m -J-Xmx512m -J-XX:PermSize=32m -J-XX:MaxPermSize=128m -J-Xverify:none

如何在Apache Ant中设置java堆大小?

设置环境变量ANT_OPTS。查看文件 或 ,了解 Ant 运行时如何使用此变量。$ANT_HOME/bin/ant%ANT_HOME%\bin\ant.bat

set ANT_OPTS="-Xms512m -Xmx512m" (Windows)export ANT_OPTS="-Xms512m -Xmx512m" (ksh/bash)setenv ANT_OPTS "-Xms512m -Xmx512m" (tcsh/csh) 

推荐