我得到" GC开销超出限制"尝试获取rowcount时出现异常。能不能让我知道问题是什么
Java代码:
try{
rs = RtHelper.getResultSet(hm, sortColumn, sortOrder, con);
if (rs != null) {
rs.last();
rowCountValue = rs.getRow();
}
}catch(Exception exception){
}finally{
if (rs!=null)
rs.close();
}
2014-05-08 00:27:47,948 ==== MYService.java ==== thread: jmsContainer-7349 ==== ERROR >
com....jms.MyService.printException() => (line: 263)
Exception: java.lang.OutOfMemoryERROR: GC overhead limit exceeded
at oracle.jdbc.driver.ScrollableResultSet.cacheCurrentRow(ScrollableResultSet.java:2257)
at oracle.jdbc.driver.ScrollableResultSet.cacheAllRows(ScrollableResultSet.java:2315)
at oracle.jdbc.driver.ScrollableResultSet.getLastRow(ScrollableResultSet.java:2368)
at oracle.jdbc.driver.ScrollableResultSet.last(ScrollableResultSet.java:477)
at org.apache.commons.dbcp.DelegatingResultSet.last(DelegatingResultSet.java:329)
答案 0 :(得分:1)
可能是您的结果集数据大小对于可用的JVM堆内存来说太大了。
如果您有足够的RAM,则可以增加Java堆大小。 而且如果数据非常大,则批量检索结果。
根据您的可用RAM添加这样的JVM参数,
-Xms512m -Xmx2g -XX:PermSize=512m -XX:MaxPermSize=2g
此示例将分配总共4 GB的内存。