5

我在 jsp/servlet 中开发 web 应用程序,我遇到了 netbeans 和 Java 的问题。我的程序需要大数据处理。所以我使用 -Xmx512m 来增加最大堆大小

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

现在我的问题是我正在构建WAR文件,直接部署并在我的另一台机器 Tomcat 中运行以进行演示,这里我面临同样的问题 java out of memory error-heap space 我也尝试过

环境变量设置 CATALINA_OPTS=-Xms512m -Xmx512m

这也没有帮助我

如何解决这个问题?,请指出正确的方向

4

5 回答 5

10

尝试设置PermSizeMaxPermSize值,应该在tomcat启动时设置,Catalina.bat然后使用这个脚本。stopstart

  set CATALINA_OPTS=-server -Xms1024m -Xmx1024m -XX:PermSize=512m -XX:MaxPermSize=512m

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

于 2012-09-11T09:51:25.590 回答
8

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

在 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

于 2012-09-11T11:16:02.120 回答
1

我知道我在这个回复上完全迟到了,但如果它对遇到同样情况的任何人有帮助,我认为值得在这里写下笔记。我指的是 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 参数,以便为您保存到注册表中

希望这可以帮助

于 2018-10-22T01:37:13.257 回答
0

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

于 2019-05-29T13:26:47.487 回答
-1

我建议您启用堆转储并使用 IBM 支持工作台(具有堆转储分析器)进行分析,并准确了解问题并进行相应的配置。

于 2012-09-11T11:01:45.187 回答