定时任务起的java进程没有释放导致oracle的问题not availavle & out of memory

最近发现一个问题,我们设置了一个定时任务,用于每天的对账,每天的对账都是启动一个java程序(jar包),时间久了,出现下面的问题:

 

有很多CardPaymentBatch.jar进程驻留在系统当中,随之出现的问题:

数据库连接不上。当时百思不得其解,不知道什么原因,所有尝试关掉几个进程,数据库就可以连接了。

今天特地搜了一下,网上有人回答了:

在非Web应用中,手工加载Spring IoC容器,不能用ApplicationContext,要用AbstractApplicationContext。用完以后要记得调用ctx.close()关闭容器。如果不记得关闭容器,最典型的问题就是数据库连接不能释放。

所以显而易见,跑完对账应该关闭容器。

原文地址:https://www.cnblogs.com/fxl-njfu/p/8465736.html