内存管理与垃圾收集(一)
----什么是垃圾
1.“ 垃圾”是指在内存中不再有用的对象,其占有的内存应该释放,将不再有用的对象清除出内存的工作就称为“垃圾收集”。
2.对象称为“垃圾”的条件
(1)对于非线程对象来说,当所有活动线程都不可能访问到该对象时,该对象便称为“垃圾”。
(2)对于线程对象来说,除了要满足第一条标准之外,还要求将线程本身已经死亡或者还处于新建状态。
注:活动线程是指已经启动但还没有死亡的线程。
上述两条规则是判断对象是否成为“垃圾”的标准,同时也可以利用上述规则使希望被释放的对象称为“垃圾”。
3.符合条件的几种情况
(1)单个对象的情况
对于非线程的单个对象来说,使其成为垃圾的方法很简单,只要将指向该对象的所有引用不再指向该对象即可。
使引用不再指向特定对象的方法:
a.将指向该对象的应用设置为null值;
b.将引用指向别的对象;
c.随着语句块或方法体的退出局部引用消亡。
(2)多个对象的情况
关键是看对象能不能被活动线程访问到
----什么是垃圾
1.“ 垃圾”是指在内存中不再有用的对象,其占有的内存应该释放,将不再有用的对象清除出内存的工作就称为“垃圾收集”。
2.对象称为“垃圾”的条件
(1)对于非线程对象来说,当所有活动线程都不可能访问到该对象时,该对象便称为“垃圾”。
(2)对于线程对象来说,除了要满足第一条标准之外,还要求将线程本身已经死亡或者还处于新建状态。
注:活动线程是指已经启动但还没有死亡的线程。
上述两条规则是判断对象是否成为“垃圾”的标准,同时也可以利用上述规则使希望被释放的对象称为“垃圾”。
3.符合条件的几种情况
(1)单个对象的情况
对于非线程的单个对象来说,使其成为垃圾的方法很简单,只要将指向该对象的所有引用不再指向该对象即可。
使引用不再指向特定对象的方法:
a.将指向该对象的应用设置为null值;
b.将引用指向别的对象;
c.随着语句块或方法体的退出局部引用消亡。
(2)多个对象的情况
关键是看对象能不能被活动线程访问到

被折叠的 条评论
为什么被折叠?



