前几天去给一个政府部门调程序,因为他们正在运行着的Tomcat总是报内存内存溢出,看了一下,发现两处非常明显的问题,发表出来让大家以后做项目时需要注意。
内存溢出,原因肯定是内存不够用,不过虚拟机分配了2G内存,怎么会不够用呢?
发现两处问题如下:
1、try catch使用不规范,所有的close语句没有放在finally中,也没有对每一个close方法做try-catch捕获。
2、最最要命的问题是,开发系统的程序员把所有需要后面模块使用的数据都放在Session中,从数据库中取出的信息都往Session中放,这一点也是很多程序员犯的错误,session确实好用,但是Session生命周期过长,会导致大量内存被占用,在并发连接多的情况下很容易出现内存溢出。切记切记。