有很多问题问这个问题或类似的问题。
它们都给出了必须执行的命令,我不知道该在哪里编写此命令。我想为我的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,值中的“”
停止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)
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正在使用多少内存,并且可以帮助您查看正在使用该内存的原因以及垃圾回收器为何不回收对象的原因。