美文网首页
2018-04-19

2018-04-19

作者: sherlock_6981 | 来源:发表于2018-04-20 10:27 被阅读0次

    第1章:对象导论

    没啥说的

    第2章:一切都是对象

    存储到什么地方:

    1、寄存器:处理器内部,存储最快

    2、堆栈(栈):RAM随机访问存储器,压栈、出栈,存放对象引用

    3、堆:通用内存池,存放Java对象

    4、常量存储:程序代码内部,ROM只读存储器

    5、非RAM存储:流对象和持久化对象

    基本类型

    boolean,char,byte,short,int,long,double,float,void

    第3章:操作符

    了解:按位操作符、移位操作符

    一元、三元操作符

    三元操作符: boolean-exp ? value0 : value1

    第4章:控制执行流程

    第5章:初始化与清理

    构造器中调用构造器:不能同时调用两个构造器,构造器置于起始处

    finalize()用途:

    Called by the garbage collector on an object when garbage collection determines that there are no more references to the object.  A subclass overrides thefinalizemethod to dispose of  system resources or to perform other cleanup.

    1、对象可能不被垃圾回收

    2、垃圾回收并不等于销毁对象

    3、垃圾回收与内存有关

    原理假定:垃圾回收器准备好释放对象占用的存储空间,首先调用其finalize()方法,并在下一次垃圾回收时,才会真正回收对象占用的内存

    垃圾回收器如何工作

    寻找垃圾:

    1、引用计数法:每个对象含有一个引用计数器,有引用连接对象时,引用计数+1,某个对象引用置为null或离开作用域,引用计数-1

    问题:对象存在循环引用,对象应该被回收,引用计数却不为零

    2、根源于堆栈和静态存储区的引用:思想:对于任何“活”的对象,一定能最终追溯到其存活在堆栈或静态存储区的引用。实现:对于发现的每个引用,必须追踪它所引用的对象,然后是此对象包含所有的引用,如此反复进行,直到所形成的网络全部被访问

    处理垃圾:

    1、停止-复制:暂停程序的执行,将所有存活对象从当前堆复制到另一个堆,没有被复制的全部是垃圾

    问题:a、占用两个堆,来回倒腾,维护比实际需要多一倍空间;b、程序进入稳定时,只产生少量垃圾,仍然从内存自一处复制到另一处,浪费

    2、标记-清扫:找到所有活的对象,给对象设一个标记,标记完成后,没有标记的对象将被释放

    3、大内存块:内存分配以较大的“块”为单位,对象较大,会占用单独的块。每个块都用相应的代数记录是否存活,如果块在某处被引用,其代数会增加;(内存块怎么被回收、废弃?)

    4、自适应技术:分代的、停止-复制、标记-清扫;

    初始化

    非静态实例初始化:实例初始化子句在两个构造器之前执行

    相关文章

      网友评论

          本文标题:2018-04-19

          本文链接:https://www.haomeiwen.com/subject/uvtgkftx.html