线上java项目报错:GC overhead limit exceeded 怎么办?

提问者:帅平 问题分类:微服务
在一个高并发的在线支付系统中,由于每个支付请求都需要创建一个新的处理线程,系统在高峰时段会同时处理数千个支付请求,从而创建了大量的线程。由于短时间内产生大量垃圾对象,垃圾回收器频繁触发,占用了大量的计算资源,导致实际垃圾回收时间超过了98%的执行时间,最终抛出GC overhead limit exceeded异常怎么办?
2 个回答
命里最重要的人
命里最重要的人
既然是多线程,可以考虑使用线程池来管理线程,然后复用已有的线程,减少线程创建和销毁的开销。
发布于:2个月前 (04-07) IP属地:四川省
我是小样i
我是小样i
可以调整JVM的参数,例如:
1、增大堆内存大小(通过-Xmx参数),以容纳更多的对象。
2、选择更高效的垃圾收集器,如G1GC(通过-XX:+UseG1GC参数)。
发布于:2个月前 (04-07) IP属地:四川省
我来回答