JJu*_*ior 4 java exception-handling exception jdbc
我收到此错误:
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at com.mysql.jdbc.MysqlIO.nextRowFast(MysqlIO.java:1585)
at com.mysql.jdbc.MysqlIO.nextRow(MysqlIO.java:1409)
at com.mysql.jdbc.MysqlIO.readSingleRowSet(MysqlIO.java:2886)
at com.mysql.jdbc.MysqlIO.getResultSet(MysqlIO.java:476)
at com.mysql.jdbc.MysqlIO.readResultsForQueryOrUpdate(MysqlIO.java:2581)
at com.mysql.jdbc.MysqlIO.readAllResults(MysqlIO.java:1757)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2171)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2562)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2512)
at com.mysql.jdbc.StatementImpl.executeQuery(StatementImpl.java:1476)
at DBase.connect(automateExport.java:31)
at automateExport.main(automateExport.java:10)
Run Code Online (Sandbox Code Playgroud)
我尝试通过打开eclipse.ini文件然后更改来增加堆memmory空间
-Xms 256m and -Xmx 512m
Run Code Online (Sandbox Code Playgroud)
但这没有帮助.我尝试了512米和1024米,但最终给出了错误:无法启动JVM并且eclipse没有打开.
我尝试在cmd行上做同样的事情:
java -Xms 256m and -Xmx 512m
Run Code Online (Sandbox Code Playgroud)
还有日食-vmargs -Xms 256m and -Xmx 512m
但仍然没有帮助.我基本上创建了一个JDBC连接来查询数据库中的大量记录.请帮我.
当您查询返回非常大的集时,mysql驱动程序将默认将整个结果集加载到内存中,然后再进行控制.听起来你刚刚耗尽内存,所以增加内存,例如-Xmx1024M
另一种选择可能是在MySQL查询上启用流式传输结果 - 这可以防止整个ResultSet一次性加载到内存中.这可以通过做
stmt = conn.createStatement(java.sql.ResultSet.TYPE_FORWARD_ONLY,
java.sql.ResultSet.CONCUR_READ_ONLY);//These are defaults though,I believe
stmt.setFetchSize(Integer.MIN_VALUE);
Run Code Online (Sandbox Code Playgroud)
(注意除Integer.MIN_VALUE之外的任何其他内容对MySQL驱动程序没有影响)
| 归档时间: |
|
| 查看次数: |
9388 次 |
| 最近记录: |