`
suhuanzheng7784877
  • 浏览: 691682 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
Ff8d036b-05a9-33b5-828a-2633bb68b7e6
读金庸故事,品程序人生
浏览量:47234
社区版块
存档分类
最新评论

要不要池化是个艰难的选择(转)-我觉得很生动就转载了下来

阅读更多
转自http://www.ixpub.net/thread-792786-1-1.html 要不要池化是个艰难的选择. 如果结合现实世界的情况, 池化肯定是必须的. 比方说如果你想要出远门, 那么在现实世界你有几个选择: 1, 坐公交; 2, 买台车; 3, 租台车; 4, 搭便车... 当然还有更多, 但是很明显的是, 就算你最后选择造一台车, 你最终大概也不会每次出门前都花几年时间造一台车. 除非你的速度快到可以在1毫秒的时间内造出一辆车, 这样的话不管是哪一种方式都明显不够这一种快. 但是问题是, 如果你真的这么干, 并且受你的影响, 其他人通过向你学习都学会了极速造车, 这样子表面上看起来问题好象已经是解决了. 但如果大家出门次数都比较多的话, 一个新的问题又将浮了出来: 你家已经没有地方放这么多的车. 这时候你可能会说: 我当然不会傻到这一步. 我有一台就够了, 干嘛造那么多? 写到这, 我觉得问题的本质已经暴露出来了, 我们在现实世界中日复一日地执行着将对象重用的法则, 但是在程序代码中却不停地重复制造功能完全相同的对象. 要知道在现实世界中, 对象的使用价值会随着时间的推移不断折旧, 当旧到不能再使用的时候, 我们就会需要一个新的对象. 这也是制造行业存在的根本. 但是反观我们程序员们整以生存的代码世界, 它们从来不存在折旧的问题, 我们的代码从来就不会越跑越老. 然后我们却从来不考虑重新使用对象, 每次我们想要一台汽车的时候, 我们就重新创造一台. 这当然不是一个正确的软件生态行为. 我这样说可能有点太华丽. 我只是不想有人以为我在讨论性能问题. 当然, 对象的重用肯定与性能相关, 但是两者不是同一个层次的问题. 性能是对运行状态的度量, 但是对象重用确确实实是从一个生态的角度来考虑问题的. SUN公司提倡不需要在代码中使用对象池技术. 他们认为虚拟机完全可以解决对象池可以解决(在虚拟机内部)的问题. 我认为果然这样的话, 虚拟机就不再需要垃圾回收了. 垃圾回收本身就是对对象状态之存在的反证. 如果对象的状态从头到尾是一致的, 当然就不会需要任何对象回收. 正因为对象有具有使用价值和不再具有使用价值的区别, 我们才需要把仍然具有使用价值的对象保留起来, 把不再具有使用价值的对象抛弃. 这一点联系到现实生活就是我家里有一个垃圾桶. 其实就平常来说, 我往垃圾桶里面扔的东西的种类大多是一些包装纸或者包装纸盒, 当然还有一些食物残渣, 如果我在家里吃饭的话. 但是很少会有电脑, 或者手机之类的东西. 可能会有人说那是因为这些东西很贵, 所以你不会用一次就扔掉. 那么一支铅笔呢? 或者一个打火机呢(这里请不要考虑它的折旧)? 东西要不要扔掉, 决定于它对于我们是不是继续具有使用价值. 注意这里有一个相对关系. 一张废纸, 当然仍然具有使用价值, 但我却不再需要, 所以我只能抛弃它. 可能又会有人说 (其实是我自己的想法) 一张废纸也可以重新使用啊, 比如拿来生火(HOHO, 我有时候确实需要, 当燃气炉点不着的时候, 一张纸的用处实在是太大了). 这样一说其实引出更深的一层意思, 我们首先应该制造能够重新使用的东西, 然后当我们决定抛弃一件东西之前, 首先应该想想这件东西是不是还有别的用途呢? 比方一张已经写满的草稿纸确实可以用来生火. 哪怕这种纸质很不幸不适合生火(有些纸就是点不着, 不过我分不清到底是哪一种), 你一恼怒就又想扔掉它了! 且慢, 如果你家有足够的地方, 并且这张纸至少还算干净的话, 象我这种人 (我很少扔东西, 我家里面有十年以前的买的鞋子. 这样做的目的是为了当碰上连绵阴雨的天气我不至于要一天买一双鞋. 我不喜欢穿皮鞋或雨鞋!) 就会劝你还是留下来并且保管好. 当然, 这里有个前提, 就是你在家里并不能独自制造出一张纸. 如果你能呢? 也许恰好你就住在造纸厂里面, 这样你当然应该扔掉它. 我主张对象重用但从来不反对扔掉没有用的东西. 比方说一个破烟头, 我很少会留下这样的东西 (我还是会经常留下一两个在烟灰缸里面, 虽然我直到现在还是没有发现它们有什么用途. 但是这样的话我家里就会长期拥有破烟头. 除非有一天我发现破烟头原来会引起女孩子的反感, 我应该是不会改变这个习惯的. )
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics