内存泄漏:使用BleakHouse发现Rails应用的内存泄漏

  尽管Rails敏捷性从来没有人质疑过但它性能却常常是人们争论热点

  DTrace是由Twitter团队(Team)近期提供个很好用分析应用行为动态框架另外Evan Weaver开发了个新工具Rails插件BleakHouse用来处理内存问题像Ruby这样动态语言所具备优势的就是其内省(Introspect)能力:在应用内部就可以检查你应用状态但是大家在使用ObjectSpace(Ruby被垃圾收集对象堆探测器)时应当多加留心诚然BleakHouse在最初版本使用了ObjectSpace对Rails应用进行快照但Evan Weaver发现ObjectSpace并不是量子化:使用ObjectSpace将会改变它自己状态

  目前BleakHouse使用个无泄漏C语言实现直接使用堆其优势是目前可以直接根据实际内存使用量画出图表(交换内存、实际内存和组合内存)并且比以前运行得更快

  它可以按控制器、Action和类来生成参考图表

  BleakHouse要用到gruff(因此也要用到rmagick)由于它是用C语言实现它还需要个打了补丁Ruby 2进制文件来监视应用旦插件安装完成并且环境被设置为产品环境(Production)时你就可以跟踪你应用了最后你可以通过运行rake来生成这些图表



  图3

  BleakHouse提醒过Charles Nutter有关使Ruby更为好用第 5条建议:把ObjectSpace丢在尤其是当人们最终必须通过对VM打补丁方式来进行监视时候:

  由于限制了Ruby垃圾回收机制和线程子系统ObjectSpace给Ruby带来损害因此应当弃的不用

  Java有不少高效堆分析工具你可能会想用于RubyRProbe和RProfiler在哪儿呢?我认为随着时间增长VM被引入并且更多公司参和进来这样工具最终会出现在人们面前……

Tags:  什么是内存泄漏 vc内存泄漏 java内存泄漏 内存泄漏

延伸阅读

最新评论

发表评论