微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – JDBC / Hibernate获取大小和内存问题

在研究了一下工作之后,我注意到我正在使用的应用程序正在使用认的提取大小(根据我所知,Oracle为10).问题在于,在大多数情况下,用户获取大量数据(范围从几千到甚至几十万),而认的10确实是一个巨大的瓶颈.

因此,这里明显的结论是使获取大小更大.起初我正在考虑将认值设置为100并将其提升为1000以进行多次查询.但后来我在网上读到认值太小以防止内存问题(即当JVM堆无法处理如此多的数据时),我应该担心它吗?

我还没有看到任何进一步的解释.是否意味着更大的提取大小意味着在获取结果集时会产生更多开销?或者它们只是意味着认情况下我可以获取10条记录然后GC它们并获取另外10条等等(而假设一次获取10000条会导致OutOfMemory异常)?在这种情况下,我真的不在乎,因为我需要记忆中的所有记录.在前一种情况下(更大的结果集意味着更大的内存开销)我想我应该先加载测试它.

解决方法:

通过设置获取大小,您可能会冒OutOfMemoryError的风险.

无论如何你需要所有这些记录的事实可能是不合理的.您需要更多机会需要返回的ResultSet反映的实体…将获取大小设置为10000意味着您正在堆积由JDBC类表示的10000条记录.当然,您不会通过您的应用程序传递这些内容.您首先将它们转换为您最喜欢的业务逻辑实体,然后将它们交给您的业务逻辑执行器.这样,只要JDBC获取一个获取批量,就会为GC提供第一个获取批量的记录.

通常,由于前面提到的内存威胁,这种转换一次完成一小部分.

但有一件事你是绝对正确的:你应该在调整之前测试具有明确要求的性能.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐