对Java中的对象、实例、句柄、直接指针的理解

        虚拟机在创建对象的时候,会优先查询常量池中是否有该对象的实例,如果没有则需要加载、解析、初始化class,然后分配内存,初始化内存,设置对象(HASH CODE 、 GC年代等),最后执行init才算是创建完对象。

        对象即实例。

        String str;

        以上的str就是一个句柄,但是并没有指向任何对象,好比这是一个客服中心,告诉你打400号码联系客服中心,但是没有指明是哪个客服人员,如果String str = "9527";这个时候就是说明了编号9527为您服务,可以通过句柄访问对象。

        直接指针,我理解的:

        class Test{

            public void doSth();

        }

        new Test().doSth();//直接指针

        Test() test = new Test();//句柄引用

        test.doSth();

        当然直接指针肯定是速度更快的,但是如果用句柄,对象被移动(比如GC),只需要改变指针而不会改变引用;如果是直接指针的方式,速度那是杠杠的,不用多余的一次指针的定位。综上,写JVM多用直接指针,写应用更多的是句柄。

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值