【发布时间】:2012-01-23 02:03:28
【问题描述】:
在对工作进行了一些调查后,我注意到我正在处理的应用程序使用的是默认提取大小(据我所知,Oracle 为 10)。问题在于,在大多数情况下,用户会获取大量数据(从几千到几十万不等),而默认的 10 确实是一个巨大的瓶颈。
所以这里的明显结论是使获取大小更大。起初,我正在考虑将默认值设置为 100,并将其设置为 1000 以进行多个查询。但是后来我在网上读到,默认值很小以防止内存问题(即当 JVM 堆无法处理这么多数据时),我应该担心吗?
我还没有看到任何进一步的解释。这是否意味着在获取结果集时更大的获取大小意味着更多的开销?还是他们只是意味着默认情况下我可以获取 10 条记录,然后 GC 它们并获取另外 10 条等等(而假设一次获取 10000 条记录会导致 OutOfMemory 异常)?在这种情况下,我真的不在乎,因为无论如何我都需要内存中的所有记录。在前一种情况下(更大的结果集意味着更大的内存开销)我想我应该先对其进行负载测试。
【问题讨论】:
标签: java hibernate memory jdbc out-of-memory