有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

TomcatJava。lang.OutOfMemoryError:带有NetBeans的Java堆空间

这是我在NetBeans启动的tomcatservlet容器实例中运行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.

共 (5) 个答案

  1. # 1 楼答案

    我猜增加内存并不能解决问题。那个监视器过滤器在做什么?是什么吞噬了所有的记忆

    你最好的办法就是弄清楚。如果这是一个web应用程序,请查看是否可以关闭该过滤器并在没有它的情况下运行。如果你成功了,你就知道监视器过滤器会导致你失败

  2. # 2 楼答案

    这与NetBeans无关(好吧,也许),而是与Tomcat有关。Tomcat是耗尽堆的进程,而不是NetBeans。跟踪Tomcat的启动过程。如果它与NB捆绑在一起,那么Tomcat将被隐藏在NB安装中,检查“enterpriseN”目录,N是一个数字,Tomcat可能在其中,它是它的一个相当通用的发行版

    至于为什么显示器是在OOM下运行的,这很难说,仔细想想,这是一个非常简单的过程。您还可以尝试禁用HTTP监控,看看是监控本身有问题还是应用程序有问题

  3. # 3 楼答案

    停止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.batcatallina.sh中,您可能已经注意到CATALINA_选项、JAVA_选项或两者都可以用于指定Tomcat JVM选项

    CATALINA_选项和JAVA_选项之间有什么区别

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

    如何在JBoss中设置java堆大小

    停止JBoss服务器,编辑$JBoss_HOME/bin/run。conf,然后重新启动JBoss服务器。您可以使用JAVA_OPTS将行更改为以下内容:

    JAVA_OPTS="-server -Xms128m -Xmx128m"
    

    如何在Eclipse中设置java堆大小? 你有两个选择:

    1. 编辑eclipse主页/eclipse。ini应该是下面这样的 重新启动Eclipse

      -vmargs-Xms64m-Xmx256m

    2. 或者,您只需在 结束了。在-vmargs之后的任何内容都将被视为JVM选项和 直接传递给JVM。命令中指定的JVM选项 这样的行将始终覆盖eclipse中的行。伊尼。对于 例如

      eclipse-vmargs-Xms64m-Xmx256m

    如何在NetBeans中设置java堆大小

    退出NetBeans,编辑文件NetBeans install/etc/NetBeans。例如

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

    如何在ApacheAnt中设置java堆大小

    设置环境变量ANT_OPTS。查看文件$ANT_HOME/bin/ant%ANT_HOME%\bin\ant.bat,了解Ant runtime如何使用这个变量

    set ANT_OPTS="-Xms512m -Xmx512m" (Windows)export ANT_OPTS="-Xms512m -Xmx512m" (ksh/bash)setenv ANT_OPTS "-Xms512m -Xmx512m" (tcsh/csh) 
    
  4. # 4 楼答案

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

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

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

  5. # 5 楼答案

    如果增加Tomcat服务器的虚拟内存,就可以了

    步骤:

    1. 在NB中,浏览windows菜单并添加服务
    2. 你会在服务中找到Tomcat。右键单击Tomcat服务器并选择属性
    3. 转到属性中的平台,并在VM选项字段中写入-Xms512m