当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:15:00  来源:本站整理

Java对象池技术的原理及其实现[Java编程]

赞助商链接



  本文“Java对象池技术的原理及其实现[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

择要

本文在解析对象池技术基本原理的底子上,给出了对象池技术的两种实现方法.还指出了利用对象池技术时所应注意的问题.

关键词 对象池;对象池技术;Java 对象;性能

Java对象的生命周期解析

Java对象的生命周期大致包含三个阶段:对象的成立,对象的利用,对象的排除.因此,对象的生命周期长度可用以下的表达式表示:T = T1 + T2 +T3.此中T1表示对象的成立时间,T2表示对象的利用时间,而T3则表示其排除时间.由此,我们可以看出,只有T2是真正有效的时间,而T1、T3则是对象本身的开销.下面再看看T1、T3在对象的整个生命周期中所占的比例.

我们知道,Java对象是通过构造函数来成立的,在这一历程中,该构造函数链中的全部构造函数也城市被自动调用.别的,默许情形下,调用类的构造函数时,Java会把变量初始化成肯定的值:全部的对象被设置成null,整数变量(byte、short、int、long)设置成0,float和double变量设置成0.0,逻辑值设置成false.所以用new关键字来新建一个对象的时间开销是很大的,如表1所示.

表1 一些操作所耗费时间的对比表

运算操作 示例 尺度化时间
本地赋值 i = n 1.0
实例赋值 this.i = n 1.2
办法调用 Funct() 5.9
新建对象 New Object() 980
新建数组 New int[10] 3100

从表1可以看出,新建一个对象需求980个单位的时间,是本地赋值时间的980倍,是办法调用时间的166倍,而若新建一个数组所耗费的时间就更多了.

再看排除对象的历程.我们知道,Java语言的一个上风,就是Java程序员勿需再像C/C++程序员那样,显式地释放对象,而由称为垃圾汇集器(Garbage Collector)的自动内存管理系统,按时或在内存凸现出不足时,自动回收垃圾对象所占的内存.凡事有利总也有弊,这固然为Java程序计划者供应了极大的便利,但同时它也带来了较大的性能开销.这种开销包含两方面,首先是对象管理开销,GC为了可以精确释放对象,它必须监控每一个对象的运行状况,包含对象的申请、引用、被引用、赋值等.其次,在GC开始回收“垃圾”对象时,系统会暂停利用程序的履行,而单独占用CPU.

因此,假如要改进利用程序的性能,一方面应尽大概削减成立新对象的次数;同时,还应尽大概削减T1、T3的时间,而这些都可以通过对象池技术来实现.

对象池技术的基本原理

对象池技术基本原理的核心有两点:缓存和同享,即关于那些被频繁利用的对象,在利用完后,不立行将它们释放,而是将它们缓存起来,以供后续的利用程序反复利用,从而削减成立对象和释放对象的次数,进而改进利用程序的性能.事实上,由于对象池技术将对象限制在一定的数目,也有效地削减了利用程序内存上的开销.

实现一个对象池,普通会触及到以下的类:

1)对象池工厂(ObjectPoolFactory)类

该类主要用于管理相同范例和设置的对象池(ObjectPool),它普通包含以下两个办法:

·createPool:用于成立特定范例和设置的对象池;

·destroyPool:用于释放指定的对象池;

同时为保证ObjectPoolFactory的单一实例,可以采取Singleton计划情势,见下述getInstance办法的实现:

public static ObjectPoolFactory getInstance() {
 if (poolFactory == null) {
  poolFactory = new ObjectPoolFactory();
 }
 return poolFactory;
}

2)参数对象(ParameterObject)类

该类主要用于封装所成立对象池的一些属性参数,如池中可存放对象的数目的最大值(maxCount)、最小值(minCount)等.

3)对象池(ObjectPool)类

用于管理要被池化对象的借出和偿还,并告诉PoolableObjectFactory完成呼应的工作.它普通包含以下两个办法:

·getObject:用于从池中借出对象;

·returnObject:将池化对象返回到池中,并告诉全部处于等候状况的线程;

4)池化对象工厂(PoolableObjectFactory)类

该类主要负责管理池化对象的生命周期,就简单来说,普通包含对象的成立及销毁.该类同ObjectPoolFactory一样,也可将其实现为单实例.


  以上是“Java对象池技术的原理及其实现[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • 利用Javascript实现网页水印(非图片水印)
  • Java开辟环境的搭建
  • Ubuntu java安装与配置
  • 办理Ubuntu 10.04 Firefox3.6 Java浏览器插件不工作的问
  • Ubuntu重装后Java环境的设置
  • Sun Java进入Ubuntu 10.10软件中央
  • Ubuntu 10.10配置Java开辟环境
  • 在Ubuntu 10.10中配置Java环境变量的办法
  • Ubuntu下Java环境的搭建
  • Ubuntu 10.04 下安装 Java, JRE
  • Ubuntu 10.04下的搭建SUN JAVA开辟环境
  • Ubuntu 12.04安装java7
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .