两种方式:
引用计数
1:先声明一个变量,并将一个引用类型的值赋给该变量,那么这个引用类型的引用次数为1,计数为1
2:如果同一个引用类型的值又赋给其他变量,那么这个引用类型的值被引用的次数就会加一,引用次数为2,计数2,并以此类推
3:如果被该引用类型的值赋值的变量,被赋值了其他的引用类型的值,那么该类型的值的引用次数就需要减一
4:当该引用类型的值的引用次数为0,就说明没有变量被该引用类型的值赋值,所以就没有办法访问到这个引用类型的值
5:周期一到,垃圾收集器就会释放掉引用次数计数为0的引用类型的值所占的内存
标记清除
1:垃圾回收器,标记所有根变量
2:标记环境中的变量的引用
3:标记所有引用链上的对象,所有被访问的对象都被标记和记住,方便以后不再访问同一个对象多次
4:垃圾回收器完成内存清除工作,销毁那些未带标记的值并回收他们所占用的内存空间
堆和栈的区别
堆
一个优先列表(优先级可以按照大小来规定)
程序员手动分配
存储:引用数据类型的数据
栈
先进后出
系统进行分配
存储:基础数据类型和引用数据类型的地址
ヾ( ̄▽ ̄)Bye~Bye~