
打个比方:内存就像一个大水缸,数据库就是水库。从数据库中查询数据就像从水库中抽水到大水缸。如果一次性抽取太多的水(超过大水缸的容量),大水缸肯定放不下(溢出了)。分页查询就好比一点一点的抽水到大水缸。jvm有垃圾回收机制,每次抽到水缸中的水可能用完后就被销毁了,水缸中的水不会一直增长下去。如果水缸中的水一直增长,就叫内存泄露。
你上面的代码不完全,不知道是否会内存溢出。如果每次循环在getComments方法中把查询的结果都放到一个List中,就可能会溢出。当然这个和数据库中的数据量和jvm的内存配置大小有关系。
sql语句要快1.不必要的列就不用查出来2作为查询的条件列设索引3.如果查询的表数据大于500万条数据,表创建之初就应该建立表分区,依据分表去查最最重要的是传输给前台页面的数据量尽量简化减少传输量,比如时间数据最好不传,自己规定个顺序,依据顺序前台生成对应的时间非要传可转为毫秒数去掉最后四个零(依据实际情况而定,因为时间只要求精确到分),用[]不用{}(key就不用传了,根据商量好的下标对应提取)
如果你的数据量非常大,肯定会内存溢出你不停的Element dom是把xml加载到内存中的,数据量一多内存就不够了,性能低下
建议你分页查询
然后通过Xstream等xml框架去生成xml
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)