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()方法,但是仅仅当下一次垃圾回收传入时才回收内存

红色怎么理解。。。
...全文
152 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
AldisZhan 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
  • 打赏
  • 举报
回复
这问题有人提过 当时还上过首页来着 你等下我找找
1:如果你能够熟练的使用Windows的,你就可以开始你的程序生涯了! 2:首先从C语言开始。有的朋友可能认为C语言太难了,应该从VB开始。虽然,对于一个初学者来说,用一些控件堆砌成一个小软件,是有一些成就感,但是,基础才是最重要的!C语言对于数据类型的描叙,远比VB里面说的更为全面,清楚,明白,而这些却是编程的根本! 3:学C语言,从数据类型,基本表达式,再到条件语句,循环语句,然后学习函数,再加上一些简单的数组知识,就可以了!一句,到现在为止,你只要理解结构化程序设计的思想也就够了! 4:有了以上的基础,就要开始学汇编了。汇编开始的时候是很难,那些各种各样的寄存器,分段的内存地址,是很难理解,可是这些知识理解了以后,后面的内容就简单了,学习8086的那些指令,再加上一些伪操作,还有DOS和BIOS断的调用,就可以看懂书上的汇编程序了。(着重是理解算法,对于后面的那些汇编的应用有兴趣的可以看一下!)到此,你应该会对计算机的理解更深一层! 5:有了汇编的基础,再来学习C语言的精华部分----指针,可谓如鱼得水了。现在你要对C语言全全面面的学一遍了,谭版的教材要从头到尾认认真真的看两遍以上。 6:学完以上的内容,有必要研究一下数据结构了,线性表,堆栈,队列,树,图,二叉树,等等,都要滚瓜烂熟!(最好是清华严蔚敏老师的那本教材) 7:请时刻记住:浮躁是学习编程的大忌! 8:现在,你应该学习一些数据库的知识,还有一些常用的算法了! 9:如果以上的知识你都学精通的,就可以开始C++的课程了,找本C++上手的书,用一个星期的时间大概了解一下C++,然后找一本VC上手的书,再花一个星期的时间学习VC的界面和用法,就可以做一些简单的应用了! 10:要想学好VC,没有扎实的C++知识是不行的,以下书籍是VC程序员必须翻的烂熟的:C++Primer,Effective C++,Thinking in C++,More Effective C++ 深入浅出MFC。 11:深刻理解C++面向对象的思想! 12:编程的时候,出错是难免的,所以,MSDN一定要熟练使用;好的代码风格会使调试的时候,更加简单的查错,所以,一定要养成良好的编程风格! 13:如果你严格的走好了以上的每一步,你才踏上了编程的门槛,可以混口饭吃了! 至于在以后,编译原理,操作系统,还有软件工程等等基础知识,是必不可少的! 14:如果现在再来学习JAVA,C#等别的语言的,应该是触类旁通,拿来就用了, 到此,你才可以称得上是一个高手!

62,615

社区成员

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

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