由java.lang.OutOfMemoryError: Java heap space发现的安装版与解压版 tomcat的区别和配置...

本文详细介绍了Tomcat安装版与解压版的区别,并提供了安装及配置环境变量的方法,帮助开发者更好地理解和使用Tomcat。

今天天气不错,睡的乱七八糟

--- xingyunpi

折腾alumnus system因为数据量太大了,还真折腾出来点什么...昨天运行的时候,突然出错,java.lang.OutOfMemoryError: Java heap space,显然是内存不足,然后在网上一查,还真有挺多的办法解决的哟,结果,都是这样子说的:

"
解决方法:手动设置H<wbr>eapsize<br> 修改TOMCAT_H<wbr>OME/bin/ca<wbr>talina.sh<br> setJAVA_OPTS=<wbr>-Xms32m-Xmx512m<br> 可以根据自己机器的内<wbr>存进行更改。</wbr></wbr></wbr></wbr></wbr>

"

按照这样的说明,找到了tomcat下的bin目录,可是木有看到有catalina.sh/catalina.cat,我就纳闷了,怎么会这样呢...

正好昨天看到别人电脑上的tomcat5.5的bin目录下有,之后看到他在虚拟机上装的时候是解压的,我突然意识到,well,俺的tomcat是安装版的,于是今天下载了一个解压版的,嘻嘻,还真的,而且,解压版好像要比安装版的好.

好啦,下面记录安装版和解压版的区别啦:

对于安装版的tomcat(我好像一直用的):

(1)其实比解压版的省去很多配置环境之类的问题,所以,要简单.只要安装,然后就可以在浏览器里面输入:http://localhost:8080/ 后显示tomcat安装成功的信息.

(2)对于文件夹中的配置文件,那就没有了,所以,在TOMCAT_HOME\bin目录下,只有一下几个文件:


其中,tomcat6.exe是用来启动服务的,双击就可以启动tomcat服务.这个文件夹下的配置文件好像也少了不少..

对于解压版的tomcat:

(1)先看一下TOMCAT_HOME\bin目录下的文件们:


这一个很明显咯,startup.bat(windows下)是开启服务的,也有我想要的catalina.bat/catalina.sh(linux).

(2)再看一下配置环境变量:

安装版的不需要配置环境变量,然后直接双击启动服务的图标就可以实现,但是解压版却不行咯.配置环境变量如下:

要配置的变量有: JAVA_HOME TOMCAT_HOME CLASSPATH(有的jdk安装好了之后,JAVA_HOME会有了,如果没有的话,就配一下)

具体配置:

JAVA_HOME:jdk的安装目录;

TOMCAT_HOME:tomcat的安装目录;

CLASSPATH:tomcat和jdk下的lib目录.

我的配置参数如下:




理解他们的意思,可以像理解相对路径和绝对路径一样.

(3)启动tomcat:

安装版的直接双击启动文件,但是解压版的要通过cmd窗口来控制了:

找到tomcat的bin目录,然后执行startup即可启动:


运行startup的时候,会弹出下面的框框,提示启动成功:


配置好了再启动起来之后,在地址栏输入:http://localhost:8080/ 就好啦.

好了,要说的就这些了.

加上tomcat解压版下载路径(其实就是官网啦):

http://tomcat.apache.org/download-60.cgi

### 堆内存不足导致的 `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 类型的异常情况的发生。同时结合使用性能监控诊断工具有助于更精准快速地发现深层次原因以便做出相应调整达到最佳效果。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值