转自:
http://bbs.9ria.com/thread-63490-1-1.html
奴隶与死囚优化法则追求的是用最少的UI实例显示更多的数据,占用最少的内存的一种极限优化法则,举个例子: 在QQ中可以打开多个聊天窗口聊天,用户聊天时只会打开少数感兴趣的人的聊天窗口,当开启新聊天窗口时,如果之前有关闭的窗口,可以重用关闭的窗口。好友可以添加或删除,删除联系人后,与联系人相关的聊天窗口和关闭的窗口一样成为闲置窗口,因此也可以被重用,当内存不大时,闲置的窗口应该优先被重用,内存过大时,闲置的窗口可以被垃圾回收,没有闲置窗口时只能从新创建新窗口。我们需要使用最少的弹出窗口显示尽可能多的数据条目需要动态创建弹出窗口,已关闭的窗口也要满足垃圾回收的条件,是否创建新的窗口实例取决于闲置窗口的数量,为达到这一目的,我想出(原创)一种称为“奴隶与死囚”的优化法则,其描述如下: 奴隶是能够工作有价值的角色,不可以屠杀,死囚是被关入监狱没有价值的角色,可以被屠杀。当奴隶抗议工作失去价值后将没收劳动工具被扔到监狱成为死囚,因为不断有奴隶起义,监狱会发生爆满,此时为了容纳新的死囚会屠杀一批旧犯,当需要新的奴隶时为节省成本,会优先考虑从监狱中释放死囚重新成为奴隶并赋予他劳动工具,如果监狱中没有剩余的奴隶,只有重新购买新的奴隶,招募奴隶和处决死囚取决于工作需求,这种做法虽然听起来有点血腥,但却是最节省成本的做法,我们来看看实际工作中履行此法则角色和发生的事件: 奴隶-打开的窗口 死囚-关闭的窗口 监狱-Dictionary 死刑执行者-垃圾回收器 劳动工具-影响到垃圾回收的引用或事件侦听 监狱爆满-内存过大 购买新的奴隶-创建新的窗口 提取死囚--使用关闭但未销毁的窗口 |