问题:在MyEclipse运行hibernate工程(j2ee测试工程)时,整个电脑内存溢出,导致黑屏,重启后才恢复
排查:
<1> 重启后每次运行该工程,任务管理器中内存每次都会增加140M左右,肯定是内存泄漏;
<2> 每次运行该工程,任务管理器中都会增加一个java虚拟机,占用内存140M左右,并且不释放;
<3> 按理说每次运行完成之后,等于程序执行结束,虚拟机应该销毁并释放内存。就算程序代码中存在内存泄漏的风险,也不应该存在这种问题;
<4> 每次运行后,没有异常,数据库的数据也修改了,观察MyEclipse右下方,发现运行标志还是红色方块,表示程序并没有结束;
<5> 逐行排查代码,发现每次调用下面的openSession()函数就会有这个问题,问题极有可能出在静态代码区:
private static SessionFactory sessionFactory = null;
static {
sessionFactory = new Configuration().configure().buildSessionFactory();
}
public static Session openSession() {
return sessionFactory.openSession();
}
<5> 对比另外一个工程也是这样调用的,每次运行后虚拟机都会自动销毁,不存在该问题;
<6> 把正常工程的代码拷贝到问题工程下执行,问题依旧存在,所以肯定不是代码的问题;
<7> 突然想到正常工程是自己下载的hibernate开发包(5.4.4版本),而问题工程用的是MyEclipse自带的hibernate开发包(5.1版本),
所以很可能是jar包的问题;
<8> 删除问题工程的全部hibernate开发包(5.1),换成下载的开发包(5.4.4),再次运行,问题解决。
SO,确实是jar包的问题。害人折腾了好久。。。暂时没有测试是哪个jar,猜测应该是5.1版本中hibernate core的jar有问题。
运行hibernate时程序不关闭的问题
最新推荐文章于 2022-10-08 17:06:56 发布