自己写的java定向采集程序一次又一次的假死。
通过各种内存工具,发现是自己的Statement和ResultSet管理有误,资源各种没有被合理回收。小心翼翼的将所有需要关闭的资源关闭掉。增加了大量睡眠时间以留给GC回收垃圾(定向采集,不能给对方服务器太大的压力么~~)。
后来又遇到proxy连接池链接超时、mysql数据库连接使用超时;咬牙去掉proxy,再跑程序又假死——估计还是链接被占用光,资源申请死锁了。
和同学讨论,他笑说:“上次和你说内存问题的时候就想告诉你可能是数据库的问题,我自己用jprofiler检测出来自己也是数据库这部分的问题;我们现在全部用hibernate来封装下边了,所以现在也不会出到这个问题了”……我日,你丫敢一次把话说完么。。。。any way, many many thanks as well...
还是用hibernate吧。不要重复发明轮子了。之前使用JDBC时,总觉得自己可以控制所有资源的申请,可以控制每一条SQL语句,会有针对性的为自己的程序提高很多性能。事实告诉我了:我重复写了很多的代码;我重复写出来的代码性能极其糟糕。很有挫折感,不知道该怀疑自己还是应该怀疑java——最近在网上也看到了好多否定java的文章。。。。