开发者社区> 光仔december> 正文

【hibernate框架】性能优化之session.clear()的运用和Java内存泄露问题

简介:
+关注继续查看
注意session.clear()的运用,尤其在不断分页循环的时候。
a)在一个大集合中进行遍历,遍历msg,取出其中的含有敏感字样的对象。

hibernate里面有一个缓存,是session级的缓存。一张表里面存了上百万的商品信息,我们要取出这些内容并且进行分页,点击下一页查看商品信息,现在假设在同一个session里面执行这个操作,这时候就会有问题。session先取50条进来,然后再开一个session,上一个session就会被清除,被清的过程是由java虚拟机的垃圾清除器来完成,什么时候清除不确定,你可以用手动来清除,利用session.clear()。
如果你只使用一个session来处理的话,当取50条信息的时候,接着再读的时候就会不断增加,在内存里面的信息就会越来越多,而且你不去清除它,由于有引用的存在,java虚拟机是不会帮你清除的。内存就会越占越多,内存就会爆掉。
实际开发中,我们每一个页面是单独起的一个session,这个就无所谓了。
但是你在导数据或用数据的时候,用到hibernate了,就可能出现这种错误。
应该怎么做呢?就是处理完50条之后,调用session.clear(),之后再调再取。

b)另外一种形式的内存泄露/面试题:Java有内存泄露吗?

Java有没有内存泄露?在语法级别上没有,因为不用回收内存,会被垃圾回收器回收了,但是你写程序的时候用到了其中的资源的时候,一定要记得回收。比如说你打开了数据库的连接池,打开了连接,你一定要记得关闭,不然的话他就在内存里老开着。比如说你打开了文件,你必须把他关闭,因为不关闭的话就无法调用本地的资源来关闭文件。因为打开文件相当于调了C,C调了windows的API,那么windows的API里面C调用的那部分对于C语言来说是需要手动回收内存的,如果不关闭文件它就不会回收。所以是Java引起的泄露,但是语法上不是(在实际当中利用的时候会有)。


转载请注明出处:http://blog.csdn.net/acmman/article/details/43937659

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
SpringBoot2.0 基础案例(10):整合Mybatis框架,集成分页助手插件
一、Mybatis框架 1、mybatis简介 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。
1520 0
intel xeon(skylake) platinum 8163 性能评测 阿里云第四代ECS服务器
intel xeon(skylake) platinum 8163 性能评测阿里云第四代ECS服务器http://www.bieryun.com/4559.html 阿里云ECS服务器是一种弹性可伸缩的云服务器,通过虚拟化平台将服务器集群虚拟为多个性能可配的虚拟机(KVM),对整个集群系统中所有KVM进行监控和管理,并根据实际资源使用情况灵活 分配和调度资源池。
40614 0
只需4个步骤,分析解决在生产环境下JVM内存泄露问题
只需4个步骤,分析解决在生产环境下JVM内存泄露问题
4932 0
(四):C++分布式实时应用框架——状态中心模块
C++分布式实时应用框架——状态中心模块   上篇:(三):C++分布式实时应用框架——系统管理模块     技术交流合作QQ群:436466587 欢迎讨论交流     版权声明:本文版权及所用技术归属smartguys团队所有,对于抄袭,非经同意转载等行为保留法律追究的权利!     状态中心是分布式系统中不可或缺的部分。
1200 0
intellij idea搭建ssh开发框架之绑定数据源
原文: intellij idea搭建ssh开发框架之绑定数据源 在intellij idea中绑定数据源并生成hibernate实体对象。
1517 0
JAVA中堆内存空间管理问题探讨
摘要:Java堆是一个运行时的数据区,对象从中分配空间,但是空间的容量是有限的。在堆内存空间中有“有用信息”,也有“无用信息”, “无用信息”占据着内存空间,降低了内存的使用效率。
797 0
使用IntelliJ IDEA开发SpringMVC网站(二)框架配置
原文:使用IntelliJ IDEA开发SpringMVC网站(二)框架配置 摘要 讲解如何配置SpringMVC框架xml,以及如何在Tomcat中运行 目录[-] 文章已针对IDEA 15做了一定的更新,部分更新较为重要,请重新阅读文章并下载最新源码。
1074 0
【JavaScript框架封装】实现一个类似于JQuery的基础框架、事件框架、CSS框架、属性框架、内容框架、动画框架整体架构的搭建
版权声明:本文为博主原创文章,未经博主允许不得转载。更多学习资料请访问我爱科技论坛:www.52tech.tech https://blog.csdn.net/m0_37981569/article/details/81055973 ...
920 0
遇到长GC停顿、CPU满载、内存泄露、JVM崩溃等高频问题,看这里!
遇到长GC停顿、CPU满载、内存泄露、JVM崩溃等高频问题,看这里!
17 0
+关注
光仔december
目前致力于JavaEE(struts/hibernate/spring/MyBatis等框架)、数据库(Mysql/oracle)、静态页面(Html/Css)技术和脚本(JavaSript/JQuery/Ajax)等技术方面的研究
497
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载