Java Out of Memory Error

         运维打电话说生产的一个服务进程挂了,他先重启下。 运维监控显示Jvm的堆内存占用一直很高,大于90%。 检查了下jvm 内存确实分配的有问题,比正常需要的要小。查看进程的erro日志, “ Out of Memory Error ” 赫然在目, 遂调整了堆内存分配,重启了事。

        a few days later ....

        运维来电话。。你这个服务进程又挂了……

        观察了运维监控日志, 堆内存使用正常。查看下进程的error 日志。 仍然是 “ Out of Memory Error ”。这说明不是堆内存不足了,那可能是栈内存。 仔细的定眼一看,

        

pool -5374  .线程池,已经开到5374 了。后面的thread 排到6. 那起码已经有了30000+的线程数了。 这肯定线程池的使用有问题, 泄露了没有释放。把栈内存用光了。

 全工程搜了下  Threadpool 果然方法中new threadpool  ,运行后没有shutdown的。 根本问题解决。

1. out of memory 不只是堆内存不足, 虽然比较常见。

2. ThreadPool 使用要谨慎, 使用不当属于大杀器。 局部使用要记得shutdown。

newFixedThreadPool

The threads in the pool will exist
until it is explicitly {@link ExecutorService#shutdown shutdown}.

    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值