【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

相关文章
|
15天前
|
JSON Java Apache
非常实用的Http应用框架,杜绝Java Http 接口对接繁琐编程
UniHttp 是一个声明式的 HTTP 接口对接框架,帮助开发者快速对接第三方 HTTP 接口。通过 @HttpApi 注解定义接口,使用 @GetHttpInterface 和 @PostHttpInterface 等注解配置请求方法和参数。支持自定义代理逻辑、全局请求参数、错误处理和连接池配置,提高代码的内聚性和可读性。
|
22天前
|
存储 Java 编译器
Java内存模型(JMM)深度解析####
本文深入探讨了Java内存模型(JMM)的工作原理,旨在帮助开发者理解多线程环境下并发编程的挑战与解决方案。通过剖析JVM如何管理线程间的数据可见性、原子性和有序性问题,本文将揭示synchronized关键字背后的机制,并介绍volatile关键字和final关键字在保证变量同步与不可变性方面的作用。同时,文章还将讨论现代Java并发工具类如java.util.concurrent包中的核心组件,以及它们如何简化高效并发程序的设计。无论你是初学者还是有经验的开发者,本文都将为你提供宝贵的见解,助你在Java并发编程领域更进一步。 ####
|
24天前
|
人工智能 前端开发 Java
基于开源框架Spring AI Alibaba快速构建Java应用
本文旨在帮助开发者快速掌握并应用 Spring AI Alibaba,提升基于 Java 的大模型应用开发效率和安全性。
基于开源框架Spring AI Alibaba快速构建Java应用
|
3天前
|
Java
java内存区域
1)栈内存:保存所有的对象名称 2)堆内存:保存每个对象的具体属性 3)全局数据区:保存static类型的属性 4)全局代码区:保存所有的方法定义
9 1
|
24天前
|
消息中间件 Java 数据库连接
Java 反射最全详解 ,框架设计必掌握!
本文详细解析Java反射机制,包括反射的概念、用途、实现原理及应用场景。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
Java 反射最全详解 ,框架设计必掌握!
|
17天前
|
缓存 算法 Java
本文聚焦于Java内存管理与调优,介绍Java内存模型、内存泄漏检测与预防、高效字符串拼接、数据结构优化及垃圾回收机制
在现代软件开发中,性能优化至关重要。本文聚焦于Java内存管理与调优,介绍Java内存模型、内存泄漏检测与预防、高效字符串拼接、数据结构优化及垃圾回收机制。通过调整垃圾回收器参数、优化堆大小与布局、使用对象池和缓存技术,开发者可显著提升应用性能和稳定性。
36 6
|
17天前
|
SQL Java 数据库连接
从理论到实践:Hibernate与JPA在Java项目中的实际应用
本文介绍了Java持久层框架Hibernate和JPA的基本概念及其在具体项目中的应用。通过一个在线书店系统的实例,展示了如何使用@Entity注解定义实体类、通过Spring Data JPA定义仓库接口、在服务层调用方法进行数据库操作,以及使用JPQL编写自定义查询和管理事务。这些技术不仅简化了数据库操作,还显著提升了开发效率。
29 3
|
17天前
|
Android开发 开发者
Android性能优化——内存管理的艺术
Android性能优化——内存管理的艺术
|
21天前
|
存储 缓存 安全
Java内存模型(JMM):深入理解并发编程的基石####
【10月更文挑战第29天】 本文作为一篇技术性文章,旨在深入探讨Java内存模型(JMM)的核心概念、工作原理及其在并发编程中的应用。我们将从JMM的基本定义出发,逐步剖析其如何通过happens-before原则、volatile关键字、synchronized关键字等机制,解决多线程环境下的数据可见性、原子性和有序性问题。不同于常规摘要的简述方式,本摘要将直接概述文章的核心内容,为读者提供一个清晰的学习路径。 ####
36 2
|
22天前
|
存储 安全 Java
什么是 Java 的内存模型?
Java内存模型(Java Memory Model, JMM)是Java虚拟机(JVM)规范的一部分,它定义了一套规则,用于指导Java程序中变量的访问和内存交互方式。
52 1
下一篇
无影云桌面