jvm调优

本文探讨了一次遇到的java.lang.OutOfMemoryError:GCoverheadLimitExceeded异常,分析了可能的原因,并通过调整JVM堆区设置成功解决了问题。详细介绍了如何检查JVM ThreadStackSize和调整堆大小。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Linux查看jvm的ThreadStackSize命令

java -XX:+PrintFlagsFinal -version | grep ThreadStackSize

 

 

实例1:
笔者昨日发现部分开发测试机器出现异常:java.lang.OutOfMemoryError: GC overhead limit exceeded,这个异常代表:GC为了释放很小的空间却耗费了太多的时间,其原因一般有两个:1,堆太小,2,有死循环或大对象;
笔者首先排除了第2个原因,因为这个应用同时是在线上运行的,如果有问题,早就挂了。所以怀疑是这台机器中堆设置太小;
使用ps -ef |grep java查看,发现:


该应用的堆区设置只有768m,而机器内存有2g,机器上只跑这一个java应用,没有其他需要占用内存的地方。另外,这个应用比较大,需要占用的内存也比较多;
笔者通过上面的情况判断,只需要改变堆中各区域的大小设置即可,于是改成下面的情况:


跟踪运行情况发现,相关异常没有再出现

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值