垃圾是怎么回收的?????

omphalos 2002-11-01 12:21:33
问一个一直高不明白的问题:
java的回收机制究竟是如何工作的,都要经过那几步?
Runtime.gc() System.gc() finalize() Runtime.runFinalization()
System.runFinalization() 之间的关系是什么,系统在什么时候调用哪个方法?
自己调用了又会有什么现象?
各位高手,谢了!!
...全文
32 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
fastmask 2002-11-04
  • 打赏
  • 举报
回复
按照think in java的说法,java的垃圾清理没有但是线程来实现,你自己调用gc是没有问题的,就是要把握好时机。
xiaolie 2002-11-04
  • 打赏
  • 举报
回复
垃圾回收的原理是应用计数(reference counting)和跟踪收集(tracing collector)。其核心条件是:
1、所有object(堆中分配的内存块)都必须用指针(再栈或寄存器中)引用(c/c++就不是这样,它允许变量直接指向object/struct地址)
2、指针不允许运算(否则应用计数和跟踪收集就无从谈起了)
DanielYWoo 2002-11-02
  • 打赏
  • 举报
回复
你可以看看Core Java 和 Thinking In Java,
如果你还想要深入看,可以看Java Virtual Machine Specification 2nd Version, 在Sun的网站上有的下
Koham 2002-11-01
  • 打赏
  • 举报
回复
自己调用这些都不会有什么明显的动作,只有当你的资源低到一定程度的时候才会进行垃圾回收,回收的时候从java.lang.Object开始找起,任何不和外界通信的都认为是垃圾,或者只是两个之间通信的,两个都认为是垃圾:原理就是这样。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧