java.lang.OutOfMemoryError: Java heap space修改tomcat启动时所占内存大小

本文介绍了如何针对大型Web应用调整JVM内存配置的方法。对于直接启动Tomcat的情况,在catalina.bat文件中设置JVM参数;对于MyEclipse中启动的情况,在JDK面板的Optional Java VM arguments中设置。
实例,以下给出1G内存环境下java jvm 的参数设置参考:

JAVA_OPTS="-server -Xms800m -Xmx800m -XX:PermSize=64M -XX:MaxNewSize=256m -XX:MaxPermSize=128m -Djava.awt.headless=true "

 

很大的web工程,用tomcat默认分配的内存空间无法启动

1.如果是通过直接启动tomcat进行web调试可以对tomcat设置做如下修改:

 

在tomcat安装目录中找到文件TOMCAT_HOME/bin/catalina.bat,添加这样一句话:

     

          set JAVA_OPTS= -Xmx1024M -Xms512M -XX:MaxPermSize=256m

 

2.如果要在myeclipse中启动,上述的修改就不起作用了,可如下设置:

 

Myeclipse->preferences->myeclipse->servers->tomcat->tomcat×.×->JDK面板中的

 

Optional Java VM arguments中添加:-Xmx1024M -Xms512M -XX:MaxPermSize=256m

### 堆内存不足导致的 `CompletionException` 问题解决方案 #### 背景分析 `java.util.concurrent.CompletionException` 是一种包装异常,它通常用于异步操作中捕获并传递底层异常。在这种情况下,实际引发的问题是由 `java.lang.OutOfMemoryError: Java heap space` 导致的堆内存不足。 堆内存不足通常是由于 JVM 配置不当或者应用程序创建了过多的大对象而未及时释放所致[^2]。以下是针对该问题的具体解决方法: --- #### 修改 JVM 参数以增加堆内存分配 通过调整 JVM 的参数可以有效缓解此问题。具体来说,可以通过设置 `-Xms` 和 `-Xmx` 来分别指定初始堆大小和最大堆大小。例如,在 Tomcat 或其他 Java 应用程序中运行时,可以在启动脚本中加入如下配置: ```bash JAVA_OPTS="-Xms512m -Xmx2048m" export JAVA_OPTS ``` 上述命令将初始堆大小设为 512MB,并允许其扩展到最多 2GB。如果是在 Windows 平台上,则可以直接编辑相应的 `.bat` 文件来完成相同的操作[^3]。 对于 IDEA 开发环境下的项目构建过程遇到此类错误的情况,也可以按照类似的逻辑去修改 VM options 设置位置之一即 File -> Settings -> Build, Execution, Deployment -> Compiler 中找到 “Build process heap size (Mbytes)” 字段将其数值增大至适当范围比如 700 到 1024 MB之间即可满足大多数需求。 另外如果是 Eclipse 用户的话则需前往 Window->Preferences->Java->Installed JREs 找到当前使用的 JDK 版本双击打开 Arguments Tab 输入同样的参数进去保存生效. 最后假如是在 Linux 上部署的服务进程发生 OutOfMemory 错误可通过查找对应服务进程号再利用 jmap 工具导出 dump 文件进一步定位哪些部分占用了大量资源从而采取针对性措施优化代码减少不必要的大对象生成频率以及加快垃圾回收机制触发时机等方式综合处理这个问题[^4]: ```bash ps aux | grep java # 查找目标进程中包含关键字 'java' 的行获取 PID 号码 jmap -dump:live,format=b,file=heap_dump.hprof <PID> # 替换<PID>为你刚才查出来的那个具体的数字值代表的目标服务进程编号 ``` 之后可借助专业的工具像 MAT(Memory Analyzer Tool), VisualVM 或者 JProfiler 对这些 hprof 格式的文件做深入剖析找出潜在瓶颈所在之处进而改进之. --- ### 总结 通过对 JVM 启动选项进行合理配置能够很好地预防由堆空间耗尽所引起的各种 CompletionException 类型的异常情况的发生。同时结合使用性能监控与诊断工具有助于更精准快速地发现深层次原因以便做出相应调整达到最佳效果。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值