日期:2014-05-20  浏览次数:20781 次

查询数据库内存不足java.lang.OutOfMemoryError: Java heap space
select语句大约查询出来6百万的id,ResultSet貌似都放到内存里了。。导致内存不足
我设置了fetchSize,也不行。求高手指教

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space


Java code

String select = "select itemid from " + ITEMS + " where itemid>91592607 ";
            String update = "update " + ITEMS + " set view=? where itemid=?";
            int[] iids = new int[5];
            try {
                pstmt = conn.prepareStatement(select);
                pstmt2 = conn.prepareStatement(update);
                rs = pstmt.executeQuery();//报错行at GetUserData.main(GetUserData.java:52)
                rs.setFetchSize(1000);



------解决方案--------------------
那你就不要一次全查出来 分批查...
------解决方案--------------------
一下取出来这么多干什么
------解决方案--------------------
你用的数据库如果是MsSQL或者是Sybase,JDBC驱动可以换成jtds试试,jtds用到了游标策略。
------解决方案--------------------
6百万跳记录就把你堆空间挤爆了, 加大java使用的内存。 不过一次性趣那么多,不建议你这么做。 肯定是有别的办法的