当前位置: 首页 > 面试题库 >

如何增加tomcat应用程序的Java堆空间

拓拔烨赫
2023-03-14
问题内容

有很多问题问这个问题或类似的问题。

它们都给出了必须执行的命令,我不知道该在哪里编写此命令。我想为我的tomcat应用程序永久增加堆空间。

我读了这页 http://javahowto.blogspot.com/2006/06/6-common-errors-in-
setting-java-heap.html
,它在Tomcat部分下说

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

设置CATALINA_OPTS = -Xms512m -Xmx512m(Windows,该值附近没有“”)
export CATALINA_OPTS =“-Xms512m -Xmx512m”(ksh / bash,该值附近为“”)
setenv CATALINA_OPTS“ -Xms512m -Xmx512m”(tcsh / csh,值中的“”

所以我换了线

设置CATALINA_OPTS =

设置CATALINA_OPTS = -Xms512m -Xmx512m

但是我仍然得到错误。

javax.servlet.ServletException:Servlet执行引发异常

根本原因

java.lang.OutOfMemoryError:Java堆空间java.lang.reflect.Array.multiNewArray(本机方法)java.lang.reflect.Array.newInstance(Array.java:90)nom.tam.util.ArrayFuncs.newInstance(ArrayFuncs。
java:1028)nom.tam.fits.ImageData.read(ImageData.java:259)nom.tam.fits.Fits.readHDU(Fits.java:573)控制器。UploadServlet.retreiveFITSFileFields(UploadServlet.java:206)控制器。
ScanServerFiles.doPost(ScanServerFiles.java:39)javax.servlet.http.HttpServlet.service(HttpServlet.java:637)javax.servlet.http.HttpServlet.service(HttpServlet.java:717)


问题答案:

您的更改很可能会起作用。您的应用程序是否需要大量内存-堆栈跟踪显示了一些与Image相关的功能。

我猜该错误要么立即发生,文件很大,要么稍后在几次请求后发生。

如果错误立即发生,那么您可以进一步增加内存,或者调查找出为什么一个文件需要那么多内存。

如果在几次请求后发生错误,则可能会发生内存泄漏-垃圾回收器不会回收对象。使用JProfiler之类的工具
可以帮助您监视VM正在使用多少内存,还可以帮助您查看正在使用该内存的原因以及垃圾回收器未回收对象的原因。



 类似资料:
  • 我使用的是Spark独立单机,128G内存,32核。以下是我认为与我的问题相关的设置: 我有一个Spark应用程序,其中有1000个设备的循环。对于每个循环(设备),它准备特征向量,然后调用MLLib的k-Means。在循环的第25次到第30次迭代(处理第25次到第30次设备)时,它遇到了错误“Java.lang.OutOfMemoryError:Java堆空间”。 我试着从0.7到0.35进行记

  • 我使用大量插件创建了一个广泛的Grails Web应用程序。我在Tomcat服务器(版本-08)上部署了这个应用程序,但是随着记录开始增长,我得到了Java堆内存错误,例如: 处理请求时发生OutOfMemoryError JobExecutionException:Java.lang.OutOfMemoryError:Java堆空间 java.lang.IllegalStateException

  • 问题内容: 我收到以下错误: 问题答案: 以下是一些可用来更改堆大小的选项。

  • 问题内容: 如何增加Java中的堆大小? 问题答案: 你可以在32位系统上增加到4GB。如果你使用的是64位系统,则可以更高。如果你选择不正确,无需担心,如果你在32位系统上要求5g,则Java会抱怨值无效并退出。 正如其他人发布的那样,使用cmd-line标志-例如 你可以通过键入java -X来获得完整列表(或者无论如何都接近完整列表)。 使用命令行选项可以增加JVM分配的堆大小。这里有3个选

  • 问题内容: 我问了这个问题,以了解如何增加JVM中的运行时调用堆栈大小。我有一个答案,而且我还有很多有用的答案和注释,这些注释和注释与Java如何处理需要大型运行时堆栈的情况有关。我在回答摘要中扩展了我的问题。 最初,我想增加JVM堆栈的大小,以便程序运行时无需安装。 相应的配置设置是具有足够大值的命令行标志。对于TT上面的程序,它可以与OpenJDK的JVM一起工作: 答案之一也指出这些-X…标

  • 嗨,我正在android应用程序中执行动画。运行时,我的应用程序崩溃,并获得OutOfMemoryException。错误为,java.lang.OutOfMemoryError:在OOM之前无法分配具有3044192个空闲字节和2MB的9437196字节分配 我试图在我的Manifeant文件中添加largeheap=true语句,但这不是正确的解决方案。所以,请帮助我解决以上问题。谢谢你。