内存不足的java堆spcae与MySQL

内存不足的java堆spcae与MySQL,java,mysql,heap-memory,Java,Mysql,Heap Memory,我在尝试从MySQL语句中检索一些数据时遇到上述错误,因为错误表明错误在第118行;以下是MySQL: .prepareStatement("SELECT orderr.* FROM orderr JOIN person ON orderr.personID = person.personID WHERE person.first_name = ?",java.sql.ResultSet.TYPE_FORWARD_ONLY, java.sql.Result

我在尝试从MySQL语句中检索一些数据时遇到上述错误,因为错误表明错误在第118行;以下是MySQL:

                    .prepareStatement("SELECT orderr.* FROM orderr JOIN person ON orderr.personID = person.personID WHERE person.first_name = ?",java.sql.ResultSet.TYPE_FORWARD_ONLY, java.sql.ResultSet.CONCUR_READ_ONLY, Integer.MIN_VALUE);
第118行附近的代码:

            int index = 0;
        if (rs.next()) {
            index++;
            rs.beforeFirst();
            while (rs.next()) {
                for (int i = 1; i < 4; i++) { // retrive column data from order
                    message.append(rs.getInt(i));   //table and append to sb.
                    if(i != 3)message.append(" "); <---line 118.
                }
                if(rs.next()){
                    rs.absolute(index);
                    message.append("\n");
                }
            }
        } 

仅当我向表中添加了两次相同的数据,然后尝试检索时,才会发生此错误。数据量应仅为一行或两行。

您将光标向后移动(到第1行),并且
while(rs.next())
循环永不结束。对于只有一行的结果集,这没有问题,因为结果集偏移量为1。

SELECT返回多少行?出现了什么错误?是否从db工具运行查询以显示仅返回了2行?您是如何启动Java的,即在启动时将最大堆设置为什么?你可能根本没有允许足够的堆来运行你的应用程序。给我们展示一些Sql的上下文。java:118.ax实际上我刚刚在MySQL工具中尝试了它,它似乎返回了我想要的平方数,例如,它返回4而不是2,或者它返回9而不是4,它返回16等等。
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Arrays.java:2367)
at java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:130)
at java.lang.AbstractStringBuilder.ensureCapacityInternal(AbstractStringBuilder.java:114)
at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:415)
at java.lang.StringBuffer.append(StringBuffer.java:237)
at stl.Sql.printPersonsOrders(Sql.java:118)
at stl.Main.main(Main.java:19)