尽管Rails
![](/icons/82724de.gif)
敏捷性从来没有人质疑过
![](/icons/82724dou.gif)
但它
![](/icons/82724de.gif)
性能却常常是人们争论
![](/icons/82724de.gif)
热点
![](/icons/82724dou2.gif)
DTrace是由Twitter团队(Team)近期提供
![](/icons/82724de.gif)
![](/icons/82724yi.gif)
个很好用
![](/icons/82724de.gif)
分析应用
![](/icons/82724chengxu.gif)
行为
![](/icons/82724de.gif)
动态框架
![](/icons/82724dou2.gif)
另外
![](/icons/82724dou.gif)
Evan Weaver开发了
![](/icons/82724yi.gif)
个新
![](/icons/82724de.gif)
工具
![](/icons/82724dou.gif)
Rails
![](/icons/82724de.gif)
插件BleakHouse
![](/icons/82724dou.gif)
用来处理内存问题
![](/icons/82724dou2.gif)
像Ruby这样
![](/icons/82724de.gif)
动态语言所具备
![](/icons/82724de.gif)
优势的
![](/icons/82724yi.gif)
就是其内省(Introspect)
![](/icons/82724de.gif)
能力:在应用
![](/icons/82724chengxu.gif)
![](/icons/82724de.gif)
内部就可以检查你应用
![](/icons/82724chengxu.gif)
![](/icons/82724de.gif)
状态
![](/icons/82724dou.gif)
但是大家在使用ObjectSpace(Ruby被垃圾收集
![](/icons/82724de.gif)
对象堆探测器)时应当多加留心
![](/icons/82724dou2.gif)
诚然
![](/icons/82724dou.gif)
BleakHouse在最初
![](/icons/82724de.gif)
版本使用了ObjectSpace对Rails应用进行快照
![](/icons/82724dou.gif)
但Evan Weaver发现ObjectSpace并不是量子化
![](/icons/82724de.gif)
:使用ObjectSpace将会改变它自己
![](/icons/82724de.gif)
状态
目前
![](/icons/82724dou.gif)
BleakHouse使用
![](/icons/82724de.gif)
是
![](/icons/82724yi.gif)
个无泄漏
![](/icons/82724de.gif)
C语言实现
![](/icons/82724dou.gif)
直接使用堆
![](/icons/82724dou.gif)
其优势是目前可以直接根据实际内存使用量画出图表(交换内存、实际内存和组合内存)
![](/icons/82724dou.gif)
并且比以前运行得更快
它可以按控制器、Action和类来生成参考图表
BleakHouse要用到gruff(因此也要用到rmagick)
![](/icons/82724dou2.gif)
由于它是用C语言实现
![](/icons/82724de.gif)
![](/icons/82724dou.gif)
它还需要
![](/icons/82724yi.gif)
个打了补丁
![](/icons/82724de.gif)
Ruby 2进制文件来监视应用
![](/icons/82724chengxu.gif)
![](/icons/82724dou2.gif)
![](/icons/82724yi.gif)
旦插件安装完成并且环境被设置为产品环境(Production)时
![](/icons/82724dou.gif)
你就可以跟踪你
![](/icons/82724de.gif)
应用了
![](/icons/82724dou2.gif)
最后
![](/icons/82724dou.gif)
你可以通过运行rake来生成这些图表
![](http://www.crazycoder.cn/WebFiles/20091/9b9b8a32-fb58-4508-8e0a-5a92c29f7252.g<img src='/icons/82724if.gif' />)
图3
BleakHouse提醒过Charles Nutter有关使Ruby更为好用
![](/icons/82724de.gif)
第 5条建议:把ObjectSpace丢在
![](/icons/82724yi.gif)
边
![](/icons/82724dou.gif)
尤其是当人们最终必须通过对VM打补丁
![](/icons/82724de.gif)
方式来进行监视
![](/icons/82724de.gif)
时候:
由于限制了Ruby
![](/icons/82724de.gif)
垃圾回收机制和线程子系统
![](/icons/82724dou.gif)
ObjectSpace给Ruby带来损害
![](/icons/82724dou.gif)
因此应当弃的不用
Java有不少高效
![](/icons/82724de.gif)
堆分析工具
![](/icons/82724dou.gif)
你可能会想
![](/icons/82724dou.gif)
用于Ruby
![](/icons/82724de.gif)
RProbe和RProfiler在哪儿呢?我认为
![](/icons/82724dou.gif)
随着时间
![](/icons/82724de.gif)
增长
![](/icons/82724dou.gif)
新
![](/icons/82724de.gif)
VM被引入
![](/icons/82724dou.gif)
并且更多
![](/icons/82724de.gif)
公司参和进来
![](/icons/82724dou.gif)
这样
![](/icons/82724de.gif)
工具最终会出现在人们面前
![](/icons/82724de.gif)
……
延伸阅读
最新评论