tomcat java.lang.OutOfMemoryError

安装了64位 jdk7_17之后,tomcat 7 总是报内存溢出错误。

调整之后依然不起作用,不得已又换回32位JDK。

调整内存的配置:

export JAVA_OPTS="-server -Xmx1536M -XX:MaxPermSize=512m -Dfile.encoding=UTF-8"
保存为%TOMCAT_HOME%/bin/setenv.bat

参数说明:

-server

    Select the Java HotSpot Server VM.
    For more information, see Server-Class Machine Detection[http://docs.oracle.com/javase/1.5.0/docs/guide/vm/server-class.html]


-Xmxn
    Specify the maximum size, in bytes, of the memory allocation pool. This value must a multiple of 1024 greater than 2MB. Append the letter k or K to indicate kilobytes, or m or M to indicate megabytes. The default value is 64MB. Examples:

               -Xmx83886080
               -Xmx81920k
               -Xmx80m
               
-XX:MaxPermSize=64m
    Size of the Permanent Generation.  [5.0 and newer: 64 bit VMs are scaled 30% larger; 1.4 amd64: 96m; 1.3.1 -client: 32m.]

-Dproperty=value
    Set a system property value. If value is a string that contains spaces, you must enclose the string in double quotes:

                java -Dfoo="some string" SomeClass


参考资料:

[1] Artur Ejsmont. http://artur.ejsmont.org/blog/content/fixing-javalangoutofmemoryerror-permgen-out-of-memory-in-grails-sts-and-tomcat

[2] java - the Java application launcher. http://docs.oracle.com/javase/1.5.0/docs/tooldocs/windows/java.html

[3] Java HotSpot VM Options. http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html

### 解决Tomcat 9中Java堆内存不足错误 当遇到`java.lang.OutOfMemoryError: Java heap space` 错误时,表明当前使用的JVM堆大小设置不合适,通常是因为设定的数据过小所致[^2]。为了有效解决问题并提高性能,可以采取以下措施来增加JVM堆大小。 #### 修改环境变量配置 一种常见的做法是在启动脚本中调整JVM参数,具体操作如下: 对于Windows平台,在`bin/catalina.bat` 文件内加入或修改下列行: ```batch set JAVA_OPTS=-Xms512m -Xmx2048m -XX:MaxPermSize=512m ``` 而对于Linux/Unix系统,则编辑 `bin/setenv.sh` (如果不存在则创建),添加相同的内容: ```bash export JAVA_OPTS="-Xms512m -Xmx2048m -XX:MaxPermSize=512m" ``` 上述命令中的 `-Xms` 和 `-Xmx` 参数分别用于指定初始和最大堆空间大小;而 `-XX:MaxPermSize` 则定义永久代的最大容量(针对较旧版本的HotSpot JVM)。这里建议根据实际情况合理分配资源[^1]。 #### 使用jmap工具监控堆使用状况 通过运行命令 `jmap -heap <PID>` 可以获取到目标进程中关于Heap的具体信息,这有助于了解现有配置是否满足需求,并据此做出相应调整。 #### 应用重启与服务重置 完成以上更改之后,记得先停止正在运行的服务实例,再按照官方文档指示重新部署应用程序。特别提醒的是,某些情况下可能还需要完全移除原有服务注册表项后再重建新的一项,比如利用 Windows 的 Service Control Manager (SCM) 工具执行类似下面的操作序列: ```batch sc delete tomcat9 # 删除tomcat9服务 service.bat install # 安装新的服务副本 ``` 确保一切正常后继续后续工作流程[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值