vaniglia 源码学习(三)

本文介绍了Vaniglia对象池管理机制,详细阐述了如何通过分拆Java对象创建过程来实现对象复用,包括类加载、链接及初始化等步骤,并提供了核心代码示例。

一.vaniglia 对象池管理

实例化一个java对象分为以下几步:类加载、链接、初始化、实例化。这也是当我们new 一个对象时JVM完成的工作,对于对象池来说它实现的基础在于分拆了new的步骤。比如vaniglia中利用初始阶段的Class.forName完成加载和链接。之后当用户从对象池中取Object时,利用newInstance实例化。核心代码如下:

1.初始化:

    public ObjectsPool(Class objectsClass) {
        this.objectsClass = objectsClass;
        this.initializeNewObjects = true;
        initialize();//完成pool = new Object[poolInitialSize];
    }

2.获取对象,支持带初始化方法和参数的接口,增加利用反射机制。

    public final Object getObject() {
        Object retValue;
        if (poolHead > 0) {
            poolHead--;
            retValue = pool[poolHead];
            pool[poolHead] = null;
        } else {
            if (initializeNewObjects) {
                try {
                    retValue = objectsClass.newInstance();
                } catch (InstantiationException e) {
                    e.printStackTrace();  
                    return null;
                } catch (IllegalAccessException e) {
                    e.printStackTrace(); 
                    return null;
                }
            }
            else {
                return null;
            }
        }
        return retValue;
    }

 

转载于:https://www.cnblogs.com/Fredric-2013/archive/2013/04/02/2995158.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值