A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陌上桑 中级黑马   /  2015-6-20 16:25  /  392 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1、毕老师对象初始化8步骤
            Person p= new Person(“ajdhfakj”,20)
             1)检测Person.class 文件,加载Person.class文件到jvm内存中
            2)        执行该类中的static代码块。
                           static{         
                                  System.out.println(s_StaticField);                 
                                  System.out.println("子类--静态初始化块");         
                             }      

   
          3)        在堆内存开辟空间,分配内存地址
          4)        在堆内存中建立对象的特有属性,并进行默认初始化
          5)        属性显示初始化
          6)        对象代码块初始化(函数不是块,只有调用时才初始化)


         7)        对象构造函数初始化   (至此,对象实例化完成)
          8)        内存地址赋给栈内存中对象变量

2、 堆内存与栈内存
           栈内存:基本类型的变量和对象的引用变量
           堆内存:存放由new创建的对象和数组
    引用变量定义时在栈中分配内存,引用变量在程序运行到作用域外释放。而数组、对象本身在堆中分配,在没有引用变量指向它的时候,才变成垃圾,但是仍然占着内存,在随后的一个不确定的时间被垃圾回收器释放掉。
       Stack Pointer会自动指引存放资源的位置,.退出函数的时候,修改栈指针就可以把栈中的内容销毁,这样的模式速度最快。栈中数据可共享  为一个新变量赋值时,会首先在栈中搜索是否存在这个值,若存在就将该变量的引用指向存储该数据的区域。
      堆从操作系统管理的内存分配,所以在分配和销毁时都要占用时间,因此用堆的效率非常低.

2 个回复

倒序浏览
已学习并记录。谢谢楼主
回复 使用道具 举报
再来复习一下
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马