Exception java.lang.OutOfMemoryError: Java heap space

Exception java.lang.OutOfMemoryError: Java heap space

IDE Used:Netbeans 8.1.

正在从 MySQL 数据库中读取大量数据。下面是我的代码:

List outer=new ArrayList<String>();
List inner=new ArrayList<String>();
Connection con;
Statement stmt;
ResultSet rs;
ResultSetMetaData rsmd;
int columnNumber;
try{
    Class.forName("com.mysql.jdbc.Driver");
    con=DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb","root","root");
    stmt=con.createStatement();
    rs=stmt.executeQuery("select * from mytable where srno<1000");
    rsmd=rs.getMetaData();
    columnNumber=rsmd.getColumnCount();
    while(rs.next()){
        for(int i=1;i<columnNumber;i++){
            inner.add(rs.getString(i));
        }
        outer.add(inner);
    }           
    System.out.println("\t" + outer);
    rs.close();
    con.close();
}catch(Exception e){
    System.out.println(e);
}

我在 运行 输入代码时遇到错误:Exception in thread "main" java.lang.OutOfMemoryError: Java heap space

我尝试在属性中设置 vm 选项>运行>VM 选项:-Xmx1024m

我还是一样error.How我能解决吗?

看看这段代码:

   while(rs.next()){
     for(int i=1;i<columnNumber;i++){
         inner.add(rs.getString(i));
     }
     outer.add(inner);
   }   

对于 table 中的每一行,您将每一列的值添加到一个列表中,然后将这些列表中的每一个添加到另一个列表中。因此,如果您的 table 有 100 万行,每行有 5 列。您正在创建 500 万行。内存耗尽是否令人惊讶?根据您的更新,它实际上是 1000 万行和 45 列。你知道你赚了4.5亿object秒吗!

还要记住,由于 object headers,外部列表中的每个项目将比 space 这些列在数据库中占用的数量多 space和其他东西。

你已经解释了这是干什么用的,如果是一个swing应用,你可以选择一个合适的TableModel,避免一次把整个数据库加载到内存中。