java内存错误堆空间

时间:2012-09-11 09:47:40

标签: java tomcat out-of-memory

我正在使用jsp / servlet开发Web应用程序,我遇到了netbeans和Java的问题。我的程序需要大量的数据处理。所以我使用-Xmx512m通过

增加最大堆大小
  

工具 - >服务器 - >在“平台”选项卡上,下面有一个VM选项   Java平台。   然后它工作正常..

现在我的问题是我正在构建 WAR 文件,直接部署并在我的另一台机器Tomcat中运行以进行演示, 在这里我面临同样的问题java内存错误堆空间  我也试过

  

环境变量集CATALINA_OPTS = -Xms512m -Xmx512m

这对我没有帮助

如何解决此问题?请指出正确的方向

5 个答案:

答案 0 :(得分:10)

尝试设置PermSizeMaxPermSize值,并设置为Catalina.bat中的tomcat 启动,然后stop和{{1使用这个脚本。

start

http://javahowto.blogspot.co.uk/2006/06/6-common-errors-in-setting-java-heap.html

答案 1 :(得分:7)

最后,我找到了问题的解决方案

在Catalina.bat文件中 你可以找到一些如下文字

set _EXECJAVA=%_RUNJAVA%
set MAINCLASS=org.apache.catalina.startup.Bootstrap
set ACTION=start
set SECURITY_POLICY_FILE=
set DEBUG_OPTS=
set JPDA=

根据你需要把

  

设置CATALINA_OPTS = -Xms512m -Xmx512m

堆大小比计算机的物理内存大。例如,

java -Xmx2g BigApp VM初始化期间发生错误 无法为对象堆保留足够的空间 无法创建Java虚拟机。

修复方法是使其低于物理内存:java -Xmx1g BigApp

答案 2 :(得分:0)

我知道我的答复完全迟到了,但是如果对任何人遇到同样的情况都有用的话,我认为值得在这里加注。我指的是tomcat 9,因此您可能需要检查此处提到的内容与您的版本的相关性:

在%CATALINA_HOME%/ bin / catalina.bat中,它明确指出:

rem   WHEN RUNNING TOMCAT AS A WINDOWS SERVICE:
rem   Note that the environment variables that affect the behavior of this
rem   script will have no effect at all on Windows Services. As such, any
rem   local customizations made in a CATALINA_BASE/bin/setenv.bat script
rem   will also have no effect on Tomcat when launched as a Windows Service.
rem   The configuration that controls Windows Services is stored in the Windows
rem   Registry, and is most conveniently maintained using the "tomcatXw.exe"
rem   maintenance utility, where "X" is the major version of Tomcat you are
rem   running.

如果您检查%CATALINA_HOME%/ bin文件夹,则可以找到一个名为“ tomcat9w.exe”的文件。双击它,您会看到此屏幕快照,可以在其中设置Xms和Xmx参数,以便将其保存到注册表中

希望这会有所帮助

答案 3 :(得分:0)

内存不足错误可能是由于Tomcat的web.xml中的会话超时数量大而导致的。在这种情况下,许多Web会话会占用许多系统内存。

答案 4 :(得分:-1)

我建议您使用IBM Support Workbench(具有堆转储分析器)启用堆转储和分析,并准确理解问题并相应地进行配置。