ps变量的使用有问题吧,在二重循环里用ps取结果集,但在三重循环里又用ps插入数据,而且每次三重循环在创建新ps前都没有close。回复
@nubo:你用的什么工具?发现问题了,是没有创建新的ps和close掉的原因。谢谢了!很多靠眼睛难找的bug,用工具监测下很容易就发现了。尝试每次少取点儿,正则的确很占内存,尤其在正则不是那么高效的情况下回复
@布谷鸟:这个位置应该是MD5加密的原字符串过长需要较多内存造成的,但异常根本原因还是其他地方占用了绝大部分内存。是不是字符串的编码出问题了,报错位置的类这是干嘛的?atsun.nio.cs.ext.GBK.newEncoder(GBK.java:36)为什么内存会不断增长呢?我每次匹配完了,不是正则所占内存会被回收吗?
、目测下来,很有可能是数据库连接过大消耗完了内存!
曾经我的项目也出现过此问题!加入开源的proxool就ok了!
建议楼主项目加入缓存!
是在不行,用eclipse提供的堆栈跟踪tool看看!因为我每次事务下来都关闭了结果集、PreparedStatement和数据库连接,而且我每次取连接是用的连接池。不知道是不是因为连接过多的原因?
引用来自“Beyond-Bit”的答案
、目测下来,很有可能是数据库连接过大消耗完了内存!
曾经我的项目也出现过此问题!加入开源的proxool就ok了!
建议楼主项目加入缓存!
是在不行,用eclipse提供的堆栈跟踪tool看看!全局只采用一个连接的方法已经测试过了,问题是同样的。因为就数据情况而言这段代码始终都不会报SQL异常,所以没有写finally,前期的代码中已经排除掉SQL插入的异常了,现在每次关闭连接是没有问题的。visualvm
你可以用 Java自带的工具visualvm查看一下内存使用情况 看看具体是哪里出了问题
很明显是拼接string啊,用stringbuilder
同意楼上string,非常明显了,string类型,还是循环