最近在运维公司老项目时,启动Tomcat
出现了java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError
错误,这个错误是JVM 内存溢出
,导致这个错误的原因是程序在申请内存时,没有足够大的内存供这个程序使用,就出现这个错误了,需要给程序设置大一些的JVM 堆
内存。
因为我们这个项目是通过Tomcat
启动的,跟执行JAR
包方式不同,需要去Tomcat
包下设置。
先找到Tomcat
下bin
路径下的catalina.bat
文件
编辑catalina.bat
文件,在第二行设置JVM 堆内存
大小
set JAVA_OPTS=-server -Xms512m -Xmx1024m -XX:PermSize=512M -XX:MaxPermSize=1024M
-Xms
代表分配给JVM 堆
初始内存的最小值
-Xmx
代表分配给JVM 堆
初始内存的最大值
-XX:PermSize
代表分配给非堆区
初始内存最小值
-XX:MaxPermSize
代表分配给非堆区
初始内存最大值
在分配给JVM
内存时一定要根据自己的项目情况而定,每个项目所需的内存大小都是不一样的,还要注意的是分配的JVM 堆
初始内存最大值和非堆区
初始内存最大值不能超过操作系统的可用内存