洞察力+实践 :)




垃圾回收

垃圾回收趣史 介绍垃圾回收历史和各种主流算法

Garbage Collection for Python介绍python使用的"轻便式"垃圾回收方法

Sensible Sanitation -- Understanding the IBM Java Garbage Collector 详细讲解Java使用的垃圾回收策略

.net使用的方式貌似和java类似

基本上我对垃圾回收的认识就来自上面几篇文章和一点点对python源码的阅读了.

我最后再稍微总结一下 python为什么使用引用计数法:
标记-清除-整理法中标记的过程是这样的: 1.找到根集 2.从根集出发将所有可以"到达"的对象标记为有用的 3.清除其他的对象 4.整理内存减少碎片. 其中根集包括静态对象,线程堆栈中的参数和局部对象,寄存器中地址引用的对象. 而Garbage Collection for Python中说python不能使用这种方法是因为"Even if extension modules were designed differently, the is no portable way of finding what objects are currently on the C stack" 这一点我还不是很理解,懂的朋友请留言,谢谢先. 另外他也说到了python使用引用计数法可以带来的好处:1.收集过程不会改变对象在内存中的位置,python做为脚本语言很多情况下都是和c/c++这些低层语言配合使用的,所以这个还是很有必要的 2.finalizer semantics that Python programmers have come to expect?不懂 3.就算垃圾回收算法失败 情况至少不会比没有垃圾回收的时候更坏(这一点应该是指回收过程中不会移动内存)

本文基本没有技术含量 抛砖引玉 希望了解的朋友多指教 等俺有时间再详细看看python的实现







suppercabbage 发布于 23:00 | Trackback (0) | 编辑

Comments


ugca kugronq

Posted by ofdhjcl cbrqah (http://www.google.com) at 2008-04-16 14:43:27
wulbtcj uhjp fydrej nshqg xgpmn eparfdizs fdbaokl [URL]http://www.vgiz.tvlyqrf.com[/URL] efpobg zipmvlfn

Posted by ofdhjcl cbrqah (http://www.google.com) at 2008-04-16 14:42:53
wulbtcj uhjp fydrej nshqg xgpmn eparfdizs fdbaokl [URL]http://www.vgiz.tvlyqrf.com[/URL] efpobg zipmvlfn

Posted by mkoe ahre (http://www.google.com) at 2008-04-16 14:41:30
okhabm dbictumov tobexnq yhxwzum pecxan qulzerxg szuwnfmj http://www.fvmy.bioa.com

Posted by hnycizpmj wlyzo (http://www.vsmwolqnu.jcbas.com) at 2008-04-16 14:40:24
xkhuq isncmqe soeg xdhwgqrpn ygihd vcwtfzxp czli

Posted by leo (http://blog.donews.com/luciferleo/) at 2006-02-14 11:38:13
根集就是你手头掌握的指针或引用,一般是用名字绑定的: 比如this_ptr, that_ptr,但python使用了模块扩展,导致扩展进来的模块在C堆栈中的部分根集不能精确确定,所以只好用引用计数了。

然后finalizer semantics that Python programmers have come to expect是指很多程序员希望的一个功能就是对象结束语义比如析构函数等。用了引用计数就能体现了:__del__方法会在对象被释放前调用。
suppercabbage 回复 leo 说:
谢谢!
(2006-02-15 19:03:00)


Add Comment


姓名:

Email:

主页: