知识大全 Java程序性能优化-对象复用“池”(1)
Posted 数据库
篇首语:知识分子优于文盲,如同活人优于死人。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Java程序性能优化-对象复用“池”(1)相关的知识,希望对你有一定的参考价值。
Java程序性能优化-对象复用“池”(1) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
对象复用 池 ( )
对象池化 是目前非常常用的一种系统优化技术 它的核心思想是 如果一个类被频繁请求使用 那么不必每次都生成一个实例 可以将这个类的一些实例保存在一个 池 中 待需要使用的时候直接从池中获取 这个 池 就称为对象池 在实现细节上 它可能是一个数组 一个链表或者任何集合类
对象池的使用非常广泛 其中最为大家所熟悉的 就是线程池和数据库连接池 线程池中 保存著可以被重用的线程对象 当有任务被提交到线程池时 系统并不需要新建线程 而是从池中获得一个可用的线程 执行这个任务 在任务结束后 也不关闭线程 而将它返回到池中 以便下次继续使用 由于线程的创建和销毁是较为费时的工作 因此 在线程调度频繁的系统中 线程池可以很好地改善性能 有关线程池更详细的介绍 读者可以参考第 章中 简单的线程池实现 一节
数据库连接池也是一种特殊的对象池 它用于维护数据库连接的集合 当系统需要访问数据库时 不需要重新建立数据库连接 而可以直接从池中获取 在数据库操作完成后 也不关闭数据库连接 而是将连接返回到连接池中 由于数据库连接的创建和销毁是重量级的操作 因此 避免频繁进行这两个操作 对改善系统的性能也有积极意义
注意 在程序中使用数据库连接池和线程池 可以有效地改善系统在高并发下的性能 这是两个非常重要的性能组件 任何对性能敏感的系统 都需要考虑合理配置这两个组件
目前应用较为广泛的数据库连接池组件有C P 和Proxool 其中C P 是伴随着Hibernate一起发布 与Hibernate联系紧密的数据库连接池 本文以C P 为例 展示数据库连接池的一般使用方法和特性
若在Hibernate中使用C P 连接池 只需要将C P 的jar包复制到开发环境中 并且在hibernate cfg xml中加入以下配置项即可
<property name= connection provider_class > hibernate connection
C P ConnectionProvider</property>
<property name= connection autoReconnect >true</property>
<property name= connection autoReconnectForPools >true</property>
<property name= connection is connection validation required >true
</property>
<! 最大连接数 >
<property name= hibernate c p max_size > </property>
<! 最小连接数 >
<property name= hibernate c p min_size > </property>
<! 获得连接的超时时间 如果超过这个时间 会抛出异常 单位毫秒 >
<property name= hibernate c p timeout > </property>
<! 最大的PreparedStatement的数量 >
<property name= hibernate c p max_statements > </property>
<! 每隔 秒检查连接池里的空闲连接 单位是秒 >
<property name= hibernate c p idle_test_period > </property>
<! 当连接池里的连接用完时 C P 一次性获取的新的数据库连接数 >
<property name= hibernate c p acquire_increment > </property>
<! 每次都验证连接是否可用 >
<property name= hibernate c p validate >true</property>
当然 也可以脱离Hibernate单独在应用程序中使用C P 以下代码构造了一个C P 的数据库连接池 并从中获得一个数据库连接
DataSource unpooled = DataSources
unpooledDataSource(
jdbc:mysql:// : /test //连接MySQL数据库
root ) //这个不是连接池
DataSource pooled = DataSources pooledDataSource(unpooled)
//构建了一个连接池
con = pooled getConnection() //从连接池中获取连接
返回目录 Java程序性能优化 让你的Java程序更快 更稳定
编辑推荐
Java程序设计培训视频教程
J EE高级框架实战培训视频教程
J ME移动开发实战教学视频
Visual C++音频/视频技术开发与实战
Oracle索引技术
cha138/Article/program/Java/gj/201311/27801相关参考
Java程序性能优化-对象复用“池”(4)[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
Java程序性能优化-对象复用“池”(2)[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
Java程序性能优化-对象复用“池”(5) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &nb
Java程序性能优化-对象复用“池”(4)[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
Java程序性能优化-对象复用“池”(2)[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
Java程序性能优化-对象复用“池”(3)[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
.对象的生成和大小的调整 JAVA程序设计中一个普遍的问题就是没有好好的利用JAVA语言本身提供的函数从而常常会生成大量的对象(或实例)由于系统不仅要花时间生成对象以后可能还需花时间对这些对象进
Java程序性能优化(1) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一避免在循环条件中使用
Java程序性能优化-负载均衡(1) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
Java程序性能优化-代理模式(1) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!