quartz定时器导致内存溢出

问题:使用quartz定时器发短信,每隔5秒发送一次,方式是并发的,在正式环境启动tomcat后quartz自动启动,运行不久服务器内存爆满,导致ssh在该用户下远程登录不上去,但除此用户外的其他用户可以远程登录,通过su切换用户时,出现-bash: fork: Resource temporarily unavailable的报错信息,直接ssh该用户则报管道中断


原因:由于quartz定时器在配置的时候是配置并发的,导致有的短信没有发送完成,另外一个又来抢夺资源,当quartz定时器启动个数多的时候就出现资源被不断抢占,资源不被释放导致内存被泄露


解决方案:

       若用户由于内存溢出ssh远程登录不上去,先用root用户登录,再使用top命令,查看那个进程占用内存多,然后kill -9 pid,这样就可以登录上去

       若可以登录则修改以下代码即可

        将改为改成单线程,当时使用了华为的一个发短信的jar,在使用其一个类SGIPSMProxy时未对其进行关闭,故在发送短信完成时加上sgipsmp.close();

你可能感兴趣的:(异常处理)