读书人

java内存溢出,该怎么处理

发布时间: 2012-01-30 21:15:58 作者: rapoo

java内存溢出
很简单的一段代码,为什么会报

Java code
for(int i = 0 ; i< n ; i ++ ){                //这段只是查询数据,每次返回结果最多只有1000行               List list = query.getSql(sql,startResult,size);                       }


以上代码,第一次、第二次、第三次、第四次都成功,第五次或者第六次以上的时候就会出现
java.lang.OutOfMemoryError : java heap space 错误,这是为什么求神人指导,谢谢。


[解决办法]
比较内存的话,看前几次之间的内存变化也能看出一些
getSql的实现挺关键的
[解决办法]
探讨
我数据库连接关闭了..我把查询方法贴出来,请大神们帮帮忙了.
回答7楼: 每次返回到list后,接着我就把list = null;..这样的话内存应该没有存5K的数据了吧?

我查看过代码,不存在死循环了.

Java code


public List getSQLQuery(String sql,int fisrtResult,int row) throws Dao……

[解决办法]
单步调试才是硬道理,你这样人家谁也看不出来。一般要不你死循环,或不你代码那里数据处理有问题。
[解决办法]
-Xms512m -Xmx1024m -XX:PermSize=512m -XX:MaxPermSize=512m
[解决办法]
看不出来的话,在某些关键节点安插

Runtime类的

freeMemory()
Returns the amount of free memory in the Java Virtual Machine.

查看到底哪里内存泄露
[解决办法]
OM时把内存dump出来,然后分析dump文件,还有jvm参数设置是否正确
[解决办法]
创建过多的对象

我以前也碰到过的。

设置好JVM参数就行。

读书人网 >J2EE开发

热点推荐