jvm之 国际酒店 一次报表 load数据死循环导致的FULLGC

从目前这几天的运行情况看,每天晚上0点到3点,应该是你们那边有大数据任务处理,在这个时间段,SOA会频繁报ZK断开重联的告警,见下图。
 
类似的问题,在CRM系统上也有出现过,我们dump内存,分析后,结论如下,看是否你们有类似的情况,供参考:
 
代码中使用了大量循环,在循环体中产生了众多对象,这些对象基本在本次循环结束后就成为垃圾对象,但因为对象过大过多,可能会逃逸到old区。
这 样,多次循环下来,old区被占满,于是full gc开始工作,在full gc过程中,jvm会暂停所有线程,且这个过程会比较久。当这个暂时时间超过ZK的会话超时时间(目前我们的SOA中设置的是10S),ZK重新连接上去 后,发现会话过期,需要重新建立连接,此时我们就会下发告警短信和邮件。
 
目前这个情况,一般不会对业务方和SOA使用造成影响。从性能的角度考虑,建议优化一下代码,避免如此频繁的full gc。
 
 
 
 
posted @ 2015-08-29 11:23  积淀  阅读(332)  评论(0编辑  收藏  举报