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,避免一次把整个数据库加载到内存中。
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,避免一次把整个数据库加载到内存中。