Thinking in java中这句话怎么理解?

yanliang_xt 2009-08-15 12:05:16
When the garbage
collector is ready to release the storage used for your object, it will first call finalize( ), and
only on the next garbage-collection pass will it reclaim the object’s memory.

当回收器释放对象内存空间时,首先调用finalize()方法,但是仅仅当下一次垃圾回收传入时才回收内存

红色怎么理解。。。
...全文
183 8 打赏 收藏 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
HelloAldis 2009-08-15
  • 打赏
  • 举报
回复
就是指 当Java虚拟机 下一次实现垃圾收集是在回收这片内存 儿不立即回收
他们是属于不可达的
ddyouyue 2009-08-15
  • 打赏
  • 举报
回复
垃圾回收并不是时时都会发生的,毕竟他是非常耗资源的。只有当垃圾回收器觉得空间不足时,或者程序员强制调用System.gc()时才会进行垃圾回收,
而finalize()则是程序员希望在对象被回收前的处理工作。有点像c++里面的destory(虽然两者还有一点区别)

总之,垃圾回收不是时时发生的,也不应该有程序员来控制
gesanri 2009-08-15
  • 打赏
  • 举报
回复
我的理解是,当jvm准备进行垃圾回收的时候,它就先调用finalize方法,相当于垃圾回收前的准备活动,这个方法执行完后,就可以等待(注意,不是立刻)到了jvm认定的时刻,开始垃圾回收
warrior30 2009-08-15
  • 打赏
  • 举报
回复
finalize的工作原理应该是这样的:一旦垃圾收集器准备好释放对象占用的存储空间,它首先调用finalize(),而且只有在下一次垃圾收集过程中,才会真正回收对象的内存.
finalize()方法并不是立刻就会执行的,执行的时间完全由系统来决定。所以很有可能的情况是已经创建了20000个对象,才开始其中的某一个对象的清除工作(这可能和时间或者系统内容的占用有关)
knightzhuwei 2009-08-15
  • 打赏
  • 举报
回复
喏 就是这个 你可以先参考下

knightzhuwei 2009-08-15
  • 打赏
  • 举报
回复
这问题有人提过 当时还上过首页来着 你等下我找找

62,620

社区成员

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

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