草庐IT

c++ - 智能指针可能的内存泄漏

全部标签

ruby-on-rails - 如何分析我的 rspec 测试以找到最大的内存消耗?

我们使用circleci作为部署过程的一部分。Circleci运行了我们的3000次测试,有时会失败,因为它达到了4GB的内存限制。看起来我们的一些测试正在创建大量对象并耗尽大量内存。我只是不知道哪些是。有没有一种简单的方法可以分析给定测试所用的内存?如果我知道如何执行此操作,我可以轻松地遍历每个测试并运行它并查看它使用了多少内存。 最佳答案 您可以使用ruby-profgem来分析内存使用情况。但首先您可以尝试使用--profileflag运行rspec.它将为您提供10个最慢的规范,这可能是开始寻找消耗大量内存的规范的好地方。

c - 命令行错误消息的 "POSIX-defined format"是什么?哪个标准?

在ruby​​-doc.org上page我发现了以下关于命令行选项/参数解析(getopt库)的内容:ReturntheappropriateerrormessageinPOSIX-definedformat.Ifnoerrorhasoccurred,returnsnil.命令行错误消息的POSIX定义格式是什么?它是哪个POSIX标准?编辑:我必须澄清一下,我对标准/推荐的错误消息很感兴趣解析命令行参数/选项。在下面的链接(答案)中,我发现只提到了getopt的这种错误格式:"%s:illegaloption--%c\n",,"%s:optionrequiresanargument-

ruby-on-rails - 创建许多新对象时内存膨胀

当我运行它然后在OSX事件监视器中观察我的ruby​​进程的内存消耗时,内存以大约3MB/s的速度增加。如果我删除事务,内存消耗量将减半,但内存占用量仍会继续增加。我的生产应用程序有一个问题,Heroku由于内存消耗而终止了进程。有没有一种方法可以在不增加内存的情况下执行以下操作?如果我注释掉.save行,那没关系,但这当然不是解决方案。ActiveRecord::Base.transactiondo10000000.timesdo|time|puts"----#{time}----"a=Activity.new(:name=>"#{time}Activity")a.save!(:va

ruby - 分配给 "lib/ruby/2.1.0/timeout.rb"的 1GB 内存

我在循环中使用Twitter、Mongo和Parallel来检索和存储数据。内存利用率达到1.5GB+GC怎么不清理这个?更新:Hereisthescriptinquestion.allocatedmemorybylocation-----------------------------------973409328/Users/jordan/.rvm/rubies/ruby-2.1.5/lib/ruby/2.1.0/timeout.rb:82359655091/Users/jordan/.rvm/gems/ruby-2.1.5/gems/json-1.8.3/lib/json/com

c - 在不使用其他功能的情况下释放 C 扩展中的全局 VM 锁

我不明白为什么在发布或获取RubyCAPI中的GVL时需要另一个间接级别。rb_thread_call_without_gvl()和rb_thread_call_with_gvl()都需要一个只接受一个参数的函数,但情况并非总是如此。我不想仅仅为了发布GVL而将我的参数包装在一个结构中。它使代码的可读性变得复杂,并且需要从void指针转换到void指针。在查看Ruby的线程代码后,我找到了GVL_UNLOCK_BEGIN。/GVL_UNLOCK_END与Python的Py_BEGIN_ALLOW_THREADS/Py_END_ALLOW_THREADS匹配的宏但我找不到关于它们以及何时

ruby - $SAFE >= 1 的 ruby​​ 中可能存在哪些漏洞?

Ruby'ssafemode不允许通过潜在危险的操作使用受污染的数据。它的级别各不相同,0表示禁用,然后1-4表示安全级别。启用安全模式时可能存在哪些漏洞?您知道在启用安全模式时发给ruby​​程序的任何CVE编号吗?什么CWEViolations(或cwe系列)是否可以启用安全模式? 最佳答案 所有应用程序级别的漏洞都完全不受$SAFE级别的影响。不通过“不安全操作”的注入(inject)攻击,例如跨站点脚本和SQL注入(inject)。这或多或少包括Web应用程序的每个漏洞类别,可能除了本地和远程文件包含。查看OWASPTop1

Ruby:排序哈希数组,即使键可能不存在

在Rails应用程序中,我有一个哈希数组,我可以轻松地对其进行排序array_of_hashes.sort_by{|hash|hash[:key_to_sort]}但是如果不是每个数组成员都有一个键:key_to_sort怎么办?然后排序将失败“String与nil的比较失败”。有没有办法让排序继续?或者还有其他方法吗? 最佳答案 这取决于您在散列没有排序键时要执行的操作。我可以想象两种情况:1)从排序中排除散列arr.delete_if{|h|h[:key_to_sort].nil?}.sort_by{|h|h[:key_to_s

ruby - 在缓存中找不到元素 - 页面可能在查找后发生了变化(Selenium::WebDriver::Error::StaleElementReferenceError)

我正在尝试单击stackoveflow水平菜单上的所有链接(问题、标签、用户、徽章、未回答)。我有这段代码,但它点击了第一个链接(这个链接是问题),然后打印1,然后出现错误。这可能有什么问题?require'watir-webdriver'classStackoverflowdefclick_all_nav_linksb=Watir::Browser.newb.goto"http://stackoverflow.com"counter=0b.div(:id=>'hmenus').div(:class=>'navmainnavs').ul.lis.eachdo|li|li.a.click

ruby - 有没有办法用内存分配报告来分析 ruby​​ 1.9.2 脚本?

我的ruby​​应用程序遇到了瓶颈,但我无法弄清楚它在哪里变慢了。我找到了memprof,但它不支持1.9。我还发现ruby​​-prof似乎在1.9.2上运行良好,但内存分配需要修补的ruby​​解释器,我只能找到ruby​​1.8的补丁。是否有ruby​​分析器可以完成这项工作? 最佳答案 您是否尝试过分析GC?Ruby1.9.2包括GC::Profiler。GC::Profiler.enableGC.startputsGC::Profiler.report您可能还想查看ObjectSpace.count_objects。

ruby - Ruby 中的函数指针?

也许这是一个愚蠢的问题,但我是ruby的新手,我用谷歌搜索了一下,发现了这些:proc=Proc.new{|x|deal_with(x)}a_lambda=lambda{|a|putsa}但我想要这个:defforward_slash_to_back(string)...defback_slash_to_forward(string)...defadd_back_slash_for_post(string)......caseconversion_typewhen/bf/ithenproc=&back_slash_to_forwardwhen/fb/ithenproc=&forward