实例1:
出现:java.lang.OutOfMemoryError: GC overhead limit exceeded,这个异常代表:GC为了释放很小的空间却耗费了太多的时间,其原因一般有两个:1,堆太小,2,有死循环或大对象; 首先排除了第2个原因,因为这个应用同时是在线上运行的,如果有问题,早就挂了。所以怀疑是这台机器中堆设置太小; 使用ps -ef |grep "java"查看,发现:该应用的堆区设置只有768m,而机器内存有2g,机器上只跑这一个java应用,没有其他需要占用内存 的地方。另外,这个应用比较大,需要占用的内存也比较多; 通过上面的情况判断,只需要改变堆中各区域的大小设置即可,于是改成下面的情况: 跟踪运行情况发现,相关异常没有再出现;
由
改为