内存管理机制(数据需要回收,所以要涉及到内存管理)
引用计数 (引用计数会出现循环引用问题)
#变量对空间进行持有,引用计数+1
#变量对空间进行解绑,引用计数-1
#当引用计数为0时,垃圾回收机制会回收空间(将空间标记为可用状态)
引用计数会出现循环引用问题:相互引用无法释放
#堆区的空间之间存在相互引用,引用这些空间的栈区变量一旦断开绑定,会导致堆区空间被变量引用的计数会减掉,但是相互引用的计数无法减掉,会一值存在存活在内存中,这叫内存泄漏
标记清除:(解决循环引用问题)
#所有线程能访问到的栈区变量,称之为gc roots对象
#垃圾回收机制被调用依赖于两个机制,固定的时间被调用一次,达到相应的阈值被调用一次
#当内存泄漏过多,内存空间达到设定的阈值会触发标记清楚. gc roots对象将可以访问的数据标记为存活状态
#标记所有gc roots对象直接或间接能访问的数据都会标记为存活状态 将存活状态的值完成拷贝,变量重指向,消除之前所有数据
优化机制(分代回收)
#随着分代的作用,高频率检查的变量会逐渐渐少,从而达到提高回收的效率,可以快速定位到需要被回收的变量
#可以忽略的问题(刚往上分代,被回收的变量需要延迟一段时间才会被回收)
懒加载
setdefault()