android垃圾回收garbage collection

来源:互联网 发布:手机淘宝怎样上架宝贝 编辑:程序博客网 时间:2024/06/05 07:23

栈不存在垃圾回收的问题, 直接压栈就可以了。

堆的话,需要复杂的垃圾回收机制。

垃圾回收是对堆来进行操作,堆中的对象是否有效, 是通过遍历堆栈来获取的, 就是一个引用计数的问题。

一个引用类型的实例化过程:

Class a = new Class();

1) Class a 的时候, 生成一个空的引用指针,并把他压栈到栈中。

2)new Class() 生成一个类的实例, 并且在堆上分配对应内存。

3 ) = 赋值的时候, a的引用指向新生成的实例。


当堆中的对象不再被栈中的任何变量引用的时候,就需要对这个对象进行垃圾回收。


系统变慢的一个很主要的原因就是,随着系统运行时间的增长, 内存碎片也会越来越多。就是因为程序反复在堆中创建和释入变量。久而久之,可用变量将不再是联系的内存空间。 为了寻址这些可用变量, 系统也会增加开销。

0 0