【发布时间】:2016-12-16 14:03:16
【问题描述】:
使用的 IDE: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
我仍然遇到同样的错误。我该如何解决?
【问题讨论】:
-
查询较小的表或使用 WHERE 子句来限制返回的数据量。运行具有更多 RAM 的 64 位 JVM。这就是你所能做的。
-
做到了。但仍然遇到同样的错误。
-
提供有关选择结果的更多详细信息:多少行?有多少列?每列内容的平均大小?
-
共有 10,67,000 行和 45 列。
-
假设每列的平均大小为
x bytes,您以x*43MB结束。如果每列的平均大小是 10 字节,那么堆中有 0.5GB。没办法。
标签: java mysql arraylist resultset