通过JDBC从11g Oracle数据库读取时,我收到了java.lang.OutOfMemoryError:Java堆空间消息。我将defaultRowPrefetch设置为10000,将其减少到2000似乎解决了这个问题。但是,向JVM(-xmx)添加额外内存并不能解决问题。这个问题似乎只出现在64位java 1.6中 - 我没有在32位java中看到这个问题。
我的问题是,我可以更改哪些设置以允许我的应用程序使用较大的defaultRowPrefetch运行?
答案 0 :(得分:2)
您正在编辑正确的设置(虽然它是-Xmx
,而不是-xmx
),但听起来您需要进一步增加它,例如。
-Xmx256m
就64位的问题而言,你会发现64位JVM比32位JVM更快地耗尽堆多(这是有道理的,指针是两倍大小),所以64位JVM无论如何都需要更多的堆。
答案 1 :(得分:1)
不能内存也会缺少PermGen吗?更多的是内存而不仅仅是堆
-XX:MaxPermSize=128m