java – JDBC / Hibernate获取大小和内存问题
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – JDBC / Hibernate获取大小和内存问题,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1230字,纯文字阅读大概需要2分钟。
内容图文
![java – JDBC / Hibernate获取大小和内存问题](/upload/InfoBanner/zyjiaocheng/967/5db981c1d8b34829896618b2daf975a9.jpg)
在研究了一下工作之后,我注意到我正在使用的应用程序正在使用默认的提取大小(根据我所知,Oracle为10).问题在于,在大多数情况下,用户获取大量数据(范围从几千到甚至几十万),而默认的10确实是一个巨大的瓶颈.
因此,这里明显的结论是使获取大小更大.起初我正在考虑将默认值设置为100并将其提升为1000以进行多次查询.但后来我在网上读到默认值太小以防止内存问题(即当JVM堆无法处理如此多的数据时),我应该担心它吗?
我还没有看到任何进一步的解释.是否意味着更大的提取大小意味着在获取结果集时会产生更多开销?或者它们只是意味着默认情况下我可以获取10条记录然后GC它们并获取另外10条等等(而假设一次获取10000条会导致OutOfMemory异常)?在这种情况下,我真的不在乎,因为我需要记忆中的所有记录.在前一种情况下(更大的结果集意味着更大的内存开销)我想我应该先加载测试它.
解决方法:
通过设置获取大小,您可能会冒OutOfMemoryError的风险.
无论如何你需要所有这些记录的事实可能是不合理的.您需要更多机会需要返回的ResultSet反映的实体…将获取大小设置为10000意味着您正在堆积由JDBC类表示的10000条记录.当然,您不会通过您的应用程序传递这些内容.您首先将它们转换为您最喜欢的业务逻辑实体,然后将它们交给您的业务逻辑执行器.这样,只要JDBC获取下一个获取批量,就会为GC提供第一个获取批量的记录.
通常,由于前面提到的内存威胁,这种转换一次完成一小部分.
但有一件事你是绝对正确的:你应该在调整之前测试具有明确要求的性能.
内容总结
以上是互联网集市为您收集整理的java – JDBC / Hibernate获取大小和内存问题全部内容,希望文章能够帮你解决java – JDBC / Hibernate获取大小和内存问题所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。