Read Sean

Read me, read Sean.
posts - 508, comments - 655, trackbacks - 9, articles - 4

换个角度理解GC

Posted on 2006-04-27 23:08 laogao 阅读(1732) 评论(6)  编辑  收藏 所属分类: The Other Side

不知不觉中,我在NewsGator Online订阅的Feed已超过100个,每天的阅读压力也在逐渐增加。在使用NewsGator的过程中,发现一个很生动的当代GC(垃圾收集器)实现的类比,拿出来和大家分享,能帮助其他人理解GC当然再好不过,帮不上的话(言下之意你已经知道分代式GC的原理),就当是消遣吧。

我不知道大家平时怎么用NewsGator来阅读订阅的Feed,我的习惯是先简单浏览一遍,把感兴趣但是暂时没时间看的话题加入My Clippings目录,然后把当前这一页全部标记为已读,继续浏览下一页或者下一个目录。等到空闲的时候,打开My Clippings仔细阅读那些被我加进来的文章和链接。My Clippings目录和其他目录一样,默认都是时间降序排列的,越新的Feed越靠前,而我通常都会把My Clippings里面的Feed数量控制在100以内。

由于我订阅的Feed很多,涉及到的领域也较广,加上阅读时间有限,第一遍总会有一些原本不是我想细看的溜进My Clippings目录,当我进入My Clippings,发现这样的Feed,对待它们我就是一个字:删。然后会陆续读掉一些Feed,分享一些Feed,这些阅读掉和分享掉的Feed,我也会清理出My Clippings。而我的阅读顺序,默认也是先读新的,再读旧的,因为越新的,越值得关注。我每次打开My Clippings也不一定总能把整个目录从头到尾浏览一遍,不过几乎也总能发现、阅读和清理掉一些Feed。这样通过一伦又一伦的新陈代谢,我的My Clippings目录能够长时间保持在100个条目之内,也总是能够留下我感兴趣但是还没来得及细看或者分享的Feed。

想想看,一个分代式GC背后的想法和实现不也是这样么?当内存不够或者应用程序主动提出垃圾收集的要求时,GC会在最新的一代对象池中找出垃圾(可能是没有意义的,被错误创建的对象,也可能是被使用掉,失去作用的对象),清理掉,留下的被升级为第二代。为什么GC可以认定第一代中的对象最有可能是垃圾,而第二代、第三代对象相对而言不大可能是垃圾呢?比对一下刚才的例子,没有经历过清理同时又是新加进来的Feed,最有可能是被错误加进来或者已经阅读和分享过的,而经历过一次和多次清理都没有被清除或者分享掉的,则更有可能是那些等待我阅读和分享的Feed。换作对象的概念:那些没有经历过GC、新创建的对象,即第一代对象中,最有可能发现错误创建或者已经处理结束的对象(超出生命周期),而第二代或者更老的对象,经历过GC,却没有被清掉(因为有其他对象还在使用它),则更有可能可能是真正有用的对象。把有限的精力用在真正值得的地方,这就是分代式GC相对传统GC的更高效率的来源。


Feedback

# re: 换个角度理解GC  回复  更多评论   

2006-04-28 09:33 by kukoo
If you are using the NewsGator, I suggest you may use the FeedDemon, a desktop RSS reader application. FeedDemon was purchased by NewsGator and the latest version can tightly integrate with NewsGator, ie, sync the feed between the FeedDemon and NewsGator Online, mark "star" for the feeds at both side, etc.

# re: 换个角度理解GC  回复  更多评论   

2006-04-28 10:25 by 大胃
Thanks for the recommendation. In fact I have been using FeedDemon 2.0 Trial for sometime now. It turns out there still are some drawbacks, of which I would not pay $29.95 for. But thanks anyway.

For me, the drawbacks include:
1- The sync feature does not work properly if you have sub-folders on the Web Reader.
2- The tabbed browsing does not feel right or normal as compared with Firefox (maybe i can configure it to use firefox instead but i would not bother to try that now).
3- Also, for some, if not most, of my reading, I live under Ubuntu Linux, where FeedDemon does not suit itself very well.
4- What is the point to use an offline-enabled rich-client these days which is not so "feature-rich" as compared with its web-based counterpart when one can easily get connected 7x24?

Maybe I will keep trying new versions of FeedDemon in the future, but for now, I guess I'll do just fine with Newsgator Online. :-)

# re: 换个角度理解GC  回复  更多评论   

2006-04-28 12:35 by Harryson
好东东,我也得弄一个才是了.

# re: 换个角度理解GC  回复  更多评论   

2006-04-28 14:42 by Harryson
能列出一些您觉得好的rss URL吗?

# re: 换个角度理解GC  回复  更多评论   

2006-04-28 15:16 by 大胃
To Harryson,

每个人感兴趣的内容都不一样,而现在网络上的RSS订阅内容也相当丰富,因此要得到一个适合自己的RSS列表,需要慢慢的积累。因为我不知道你想关心哪方面的Feed,所以不知道如何推荐。

如果实在无从下手,你可以到NewsGator.com或者Bloglines.com上面注册一个账户先,它们都提供一些现成的RSS Feed供你选择。

假如你觉得我的blog还不错的话,从订阅我的RSS开始如何?:P

# re: 换个角度理解GC  回复  更多评论   

2006-04-28 15:37 by Harryson
谢谢!
blogjava的肯定订阅了.
您不是订阅了100多个了吗?
我是想偷懒,想从您那撒选一些我感兴趣的rss

只有注册用户登录后才能发表评论。


网站导航: