您的位置:首页 > 编程语言 > Java开发

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

2018-03-01 14:25 309 查看
        虚拟机在创建对象的时候,会优先查询常量池中是否有该对象的实例,如果没有则需要加载、解析、初始化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多用直接指针,写应用更多的是句柄。

        
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Java虚拟机 JVM