ruby-on-rails – 如何测量初始化时每个gem需要多少内存?
我有一个Rails 2.3.10应用程序与捆绑.在启动时,内存占用相当大(开发模式为300MB).
我想看看每个宝石在启动时有多少内存. 解决方法
我们有一个问题,我们的基本的Rails应用程序,没有流量或请求,启动时的占地面积达到140MB.
我们使用以下方法跟踪我们应用程序的Gemfile中指定的每个gem的内存要求,而无需尝试修补bundler. >使用rails new myappname生成一个新的空轨应用程序 # require_and_profile.rb def require_and_profile(gemname = nil) unless gemname puts "%-20s: %10s | %10s" % ['gem','increment','total'] return end # This is how to get memory of calling process in OS X,check host OS for variants memory_usage = `ps -o rss= -p #{Process.pid}`.to_i / 1024.0 require gemname puts "%-20s: %10.2f | %10.2f" % [ gemname,(`ps -o rss= -p #{Process.pid}`.to_i / 1024.0 - memory_usage),(`ps -o rss= -p #{Process.pid}`.to_i / 1024.0)] end pattern = /^[^#]*gem[ ]*['"]([^,'"]*)['"][,~>0-9.'"]*(:require[ => ]*['"]([^'"]*)['"][,])?/ require_and_profile File.open('Gemfile').each do |line| if line.match(pattern) if line.match(pattern)[3] require_and_profile line.match(pattern)[3] else require_and_profile line.match(pattern)[1] end end end >运行轨道c 这有助于我们识别,例如,当我们只需要在资产组中时,我们就会在启动时要求资产同步.我们确实发现,在不同的引导下,每个宝石的内存占用不完全相同,但运行它几次会显示哪些是内存饥饿宝石的模式. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |