`

java对象池技术

阅读更多
java中的对象池技术,是为了方便快捷地创建某些对象而出现的,当需要一个对象时,就可以从池中取一个出来(如果池中没有则创建一个),则在需要重复重复创建相等变量时节省了很多时间。对象池其实也就是一个内存空间,不同于使用new关键字创建的对象所在的堆空间。本文只从java使用者的角度来探讨java对象池技术,并不涉及对象池的原理及实现方法。个人认为,如果是真的专注java,就必须对这些细节方面有一定的了解。但知道它的原理和具体的实现方法则不是必须的。

1,对象池中对象和堆中的对象public class Test{Integer i1=new Integer(1);
   Integer i2=new Integer(1);
//i1,i2分别位于堆中不同的内存空间   System.out.println(i1==i2);//输出false
   Integer i3=1;
   Integer i4=1;
//i3,i4指向对象池中同一个内存空间   System.out.println(i3==i4);//输出true//很显然,i1,i3位于不同的内存空间System.out.println(i1==i3);//输出false}2,8种基本类型的包装类和对象池java中基本类型的包装类的大部分都实现了对象池技术,这些类是Byte,Short,Integer,Long,Character,Boolean,另外两种浮点数类型的包装类则没有实现。另外Byte,Short,Integer,Long,Character这5种整型的包装类也只是在对应值小于等于127时才可使用对象池,也即对象不负责创建和管理大于127的这些类的对象。以下是一些对应的测试代码:public class Test{public static void main(String[] args){   //5种整形的包装类Byte,Short,Integer,Long,Character的对象,   //在值小于127时可以使用对象池   Integer i1=127;   Integer i2=127;   System.out.println(i1==i2)//输出true   //值大于127时,不会从对象池中取对象   Integer i3=128;   Integer i4=128;   System.out.println(i3==i4)//输出false   //Boolean类也实现了对象池技术   Boolean bool1=true;   Boolean bool2=true;   System.out.println(bool1==bool2);//输出true   //浮点类型的包装类没有实现对象池技术   Double d1=1.0;   Double d2=1.0;   System.out.println(d1==d2)//输出false  }}3,String也实现了对象池技术String类也是java中用得多的类,同样为了创建String对象的方便,也实现了对象池的技术,测试代码如下:public class Test{public static void main(String[] args){//s1,s2分别位于堆中不同空间String s1=new String("hello");String s2=new String("hello");System.out.println(s1==s2)//输出false//s3,s4位于池中同一空间String s3="hello";String s4="hello";System.out.println(s3==s4);//输出true}}
分享到:
评论

相关推荐

    Java对象池技术的原理

    是关于Java对象池技术的原理及其实现的

    Java对象池技术的原理及其实现

    Java对象池技术的原理及其实现

    Java对象池实现源码

    总结来说,Java对象池是一种优化技术,通过复用对象减少创建和销毁的成本。我们可以借鉴Jakarta Commons Pool的设计思路,实现自己的轻量级对象池,满足特定场景的需求。理解并熟练运用对象池,对于提升Java应用的...

    关于java对象池的例子代码

    Java对象池是一种优化资源管理的技术,它通过复用已经创建并初始化过的对象,避免了频繁地创建和销毁对象带来的性能开销。在Java中,对象池通常用于数据库连接、线程、Socket等昂贵资源的管理。下面我们将深入探讨...

    java对象池化技术

    用于充当保存对象的“容器”的对象,被称为“对象池”(Object Pool,或简称 Pool)。 对象池化的优缺 对象池化技术可以减少对象生成和初始化时的消耗,提高系统的运行效率。但是,并非所有对象都适合拿来池化――...

    java对象池化技术[参照].pdf

    Java对象池化技术是一种优化程序性能的策略,它通过预先创建一组对象并保留它们,以便在需要时重复使用,而不是每次需要时都创建新的对象。这样可以显著减少对象的创建和初始化时间,尤其适用于那些创建成本较高的...

    Java--pool-technology.rar_theory

    Java对象池技术是一种优化资源管理的方法,主要用于减少创建和销毁对象的开销,尤其是在频繁创建和销毁对象的应用场景中。其基本思想是预先创建并维护一组可重用的对象,当程序需要一个对象时,可以从池中获取,而...

    高效的,固定大小的对象池

    在计算机科学和编程领域...综上所述,一个高效的固定大小对象池是通过预先分配并管理一组对象来提升性能的内存管理技术。其核心在于优化内存分配和对象复用,以减少系统开销,尤其适用于需要频繁创建和销毁对象的场景。

    工厂设计模式附加对象池说明

    对象池是一种资源管理技术,用于预先创建一组对象并存储在一个“池”中,当需要对象时,可以从池中获取,而不是每次需要时都创建新的对象。这样可以显著减少对象的创建和销毁开销,尤其是在创建对象成本高或者系统...

    对象池&线程池&数据库连接池

    在Java中,`java.util.concurrent`包下的`ObjectPool`接口就是用于定义对象池的行为。通过对象池,可以避免频繁的实例化和垃圾回收,提高程序运行速度。例如,JDBC的`Statement`和`PreparedStatement`对象池,可以...

    基于java的对象池实现.zip

    通过上述步骤,我们已经实现了一个基本的Java对象池。然而,这只是一个简化的示例,实际应用中可能需要考虑更多的因素,如对象的公平分配、超时回收、对象状态检查等。例如,Apache Commons Pool2库提供了一套完整的...

    对象池

    对象池是一种在软件设计中常见的优化技术,主要目的是提高程序性能和减少系统资源的消耗。在Java编程中,对象池通常用于管理那些创建和销毁成本较高的对象,通过...理解并熟练应用对象池技术对于提升系统性能至关重要。

    Java的动态代理、反射机制和数据库连接池技术

    数据库连接池技术,如HikariCP、C3P0、Druid等,是提高应用程序性能和效率的重要手段。连接池预先创建并维护一定数量的数据库连接,当应用需要时可以从池中获取,使用完毕后归还。这样避免了频繁创建和销毁连接的...

    Java jdbc数据库连接池总结

    Java JDBC 数据库连接池...Java JDBC 数据库连接池技术可以解决频繁的数据库连接操作对系统资源的占用,提高系统的性能和可靠性。同时,连接池技术也可以和其它技术结合使用,例如 EJB 技术,实现高效的数据库访问。

    apache对象池的实现

    Apache对象池技术是一种高效利用资源的策略,它通过预先创建并维护一组可重用对象来减少频繁创建和销毁对象带来的开销。在Java环境中,Apache Commons Pool库是实现对象池的常见工具,它提供了多种对象池实现,适用...

    对象池工厂(微型IOC容器)

    对象池是一种优化技术,用于管理对特定类型对象的创建和复用,以提高性能,减少系统资源的消耗。它通过维护一个对象集合来避免频繁地创建和销毁对象,特别是对于那些创建和初始化成本较高的对象。 在描述中提到的...

    Java 连接池实现

    2. **连接池**:连接池是一个对象池,存储已创建的数据库连接。应用程序在需要时从池中获取连接,使用完毕后归还,而不是直接关闭。这样可以减少创建和销毁连接的次数,提高系统性能。 3. **配置文件**:在手动实现...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

    第2章 Java对象持久化技术概述  2.1 直接通过JDBC API来持久化实体域对象  2.2 ORM简介  2.2.1 对象-关系映射的概念  2.2.2 ORM中间件的基本使用方法  2.2.3 常用的ORM中间件  2.3 实体域对象的其他持久化模式...

    计算java对象的大小的方法

    - **设计模式选择**:比如,有时为了减少内存消耗,可以选择使用享元模式或者对象池。 总的来说,计算Java对象的大小是一个复杂的过程,涉及到JVM的内部机制。开发者可以通过各种工具和源码分析来获取这些信息,并...

Global site tag (gtag.js) - Google Analytics