day09 详解内存管理机制

"""
今日内容:详解内存管理
1、引用计数
  在内存中为了对变量的值进行标记从而方便管理,采用引用计数的方式对变量进行标记。
  (1)如果变量的值被引用一次,那么该变量的引用计数就会 +1
  (2)如果变量的值被解除绑定,那么该变量的引用计数 -1
  (3)如果某个变量的引用计数变为了0,那么在下一次对内存进行检测时就会被标记为可用状态 2、引用计数机制引起的循环引用问题
  在进行变量的引用过程中,如果内存中有两个变量之间进行了互相引用,那么在释放栈区对堆区值得引用时,由于两个值之间存在了相互的引用,
所以这两个值对应的内存空间的引用计数永远不会为 0 ,该地址永远不会被垃圾回收机制回收,造成内存的泄露 3、解决循环引用造成的内存泄露
(1)在内存中存在两种内存的管理机制: 垃圾回收机制 、清除机制
(2)清除机制:在内存中所有能被线程访问的栈区的变量是被 gc roots对象,同时在内存中存在一个阈值,当内存的使用达到阈值时,会启动内存的清除机制,
此时,所有的 gc roots对象可以访问的堆区对象都被 标记机制 标记为存活状态,被标记为存活状态的值,会被复制到内存的另一块区域,栈区的变量再重新绑定
新的值地址
(3)当完成复制后,清除机制会清除原来空间的所有引用计数,全部标记为可用状态 4、分代回收机制 ---> 引用计数的垃圾回收机制的优化
(1)在内存中,会定期进行内存进行检测,从而回收引用计数为0的空间,但是如果每次都全部进行检测的话会十分费时,所以对内存中的地址进行了分代,通过
分代提高检测效率
(2)刚产生的变量是属于新生代的,检测频率较高,当检测的次数达到一定时,会提高其分代,认为其是短时间内不会被清除的数据,降低其检测频率,进入青
春代。
(3)会重复二步骤,达到一定的检测次数后就提高其分代,减低其检测频率,从青春代一直到老年代。
"""

1、引用计数

day09 详解内存管理机制

2、循环引用问题

day09 详解内存管理机制

3、标记清除

day09 详解内存管理机制

4、分代回收机制

day09 详解内存管理机制

上一篇:恢复mysql 中root 用户的所有权限


下一篇:CentOS Minimal版最小化安装后VMware联网详解