问题标签 [mri]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
78 浏览

jruby - 在 JRuby 中使用带有 c 扩展的 gem,或者将它们移植到 Java?

我正在输入字符串和一些以前输入的字符串之间进行模糊匹配测试。测试是在打字时实时进行的。

我已经有了一个准确得惊人的算法,叫做StrikeAMatch,它已被翻译成多种语言。我发现最快的 Ruby 实现是amatch。但是,它与我的 JRuby 环境不兼容,因为它在需要 C Ruby 解释器 (MRI)的 C 扩展中处理数据。虽然它非常快:

我希望我可以避免设置替代环境。另一种方法是尝试移植JRuby Wiki 中建议的原始 Java 代码。不知道该怎么做。

关于如何解决这个问题的任何想法?

0 投票
1 回答
531 浏览

ruby - Ruby 基准如何计算线程内的总 cpu 时间

基准测试是否显示了在线程中执行代码实际花费的时间?

或者它是否显示 ruby​​ 解释器在我们正在考虑的线程处于活动状态时在任何线程上运行的总时间(即使它因为另一个正在运行而暂停)?

例如假设线程 A 已经执行了 1ms,然后 MRI 切换到线程 B 并在那里停留了 3ms。最后线程 A 再次执行,再过 1ms 后终止。

对于线程 A,基准测试显示总时间为 2 毫秒还是 5 毫秒?(不是实时的)

更新:我认为单个 Sidekiq 进程会产生多个 Ruby 线程。所以就相当于说 Sidekiq 作业而不是线程。当 Sidekiq 执行其他一些繁重的工作时,我有一些 Sidekiq 工作需要更多的cpu 时间。这使我认为基准测试包括花在其他工作上的时间。然而,也许@mudasobwa 是对的,cpu 时间不包括花在其他线程/作业上的时间。在这种情况下,我能给出的唯一解释是系统连接/带宽是一个瓶颈(我的轻量级作业性能受到其他消耗大量带宽的繁重作业的影响)。

0 投票
1 回答
429 浏览

ruby - 是否有理由手动调用垃圾收集器?

GC.start有人可以给我一个关于打电话是个好主意的情况的例子吗?我正在阅读GC课程文档,但我无法想象使用它的好情况......

0 投票
1 回答
1065 浏览

ruby-on-rails - 集群 puma 不同时接受超过 1 个请求

我已经根据 heroku 手册设置了我的 puma Web 服务器:使用 Puma Web Server 部署 Rails 应用程序

config/puma.rb

Procfile包含:

现在,当我尝试访问sleep 10延迟响应的操作然后尝试访问其他操作时,我的理解是 Puma 将同时处理这两个请求(因为我有 2 个工作人员)。但相反,它等待第一个休眠的请求完成,然后继续进行第二个请求。我错过了什么吗?

我的设置是:

  • 红宝石 2.2.4

  • 导轨 4.2.0

编辑:

好的,所以我发现在 Heroku 上它可以工作,所以问题是,为什么它在开发模式下不起作用?

0 投票
1 回答
59 浏览

c - #define ROBJECT_EMBED_LEN_MAX ROBJECT_EMBED_LEN_MAX 有什么作用?

浏览 MRI 的代码,发现这些#define我看不懂:

那些#defines有什么意义?他们似乎什么都不做...

此代码可在ruby/include/ruby/ruby.hruby​​ github repo 的文件中找到。

0 投票
0 回答
326 浏览

ruby-on-rails - 在类方法中记忆类的实例会导致 Ruby 中的内存泄漏吗?

我和我的同事正在寻找我们的 Ruby on Rails 应用程序中的内存泄漏,我们有一些初步迹象表明类似于以下代码可能是罪魁祸首:

我们的预感是,因为self.example它是一个类方法,它可能无法正确地垃圾收集 memoized 的实例Widget::Factory,它本身利用了广泛的缓存。

我们相信,每次运行我们的后台工作人员时,都会导致内存泄漏。它似乎正在启动一个实例,Foo::Bar但从未解除分配由Widget::Factory.

有没有人知道 MRI 的 GC 如何在这样的用例中工作,或者这只是一个红鲱鱼?

0 投票
0 回答
476 浏览

ruby-on-rails - Ruby on Rails 应用程序中的内存泄漏作为垃圾收集器活动峰值

  • 框架:Rails 5.0.0.1
  • 平台:Heroku
  • 服务器:Puma,30 个进程,每个进程 10 个工作人员

我们看到内存每小时增加一次,这与 Ruby 垃圾收集器一致,如下面的屏幕截图所示。在整个内存增加(~1300rpm)期间,每个时间单位的请求数几乎是恒定的。

除了垃圾收集器运行之外,内存似乎很稳定,通常在一个相当稳定的平均值附近沿任一方向波动几兆字节。使用诸如内存分析器之类的分析工具在本地调试应用程序或使用对象空间分配跟踪转储堆空间并不能最终确定任何内存泄漏。

问题:

如何确定它是否与垃圾收集器无法正常工作有关?

在此处输入图像描述

0 投票
1 回答
379 浏览

image-processing - FSL(预处理 BedPostX)错误:日志文件中的错误。这是什么意思?

当我进行 BedpostX FSL 预处理时,我收到以下消息:

所以我检查了日志文件:

但我真的不知道这意味着什么。这真的很奇怪,因为这个过程几乎完成了(见上面的 61 它停止了)。我得到了几乎所有的输出。所以我的问题是:

  1. 错误是什么意思?
  2. 该过程是否仍然完成?(见上面有说)
  3. 如果不是,我能做些什么来解决这个问题?

这是另一个屏幕截图:

错误信息

0 投票
1 回答
619 浏览

ruby-on-rails - Rails 5 从初始化程序开始的线程发疯了

我有以下代码config/application.rb

然后是以下相关方法:

基本上在服务器启动时启动一个线程来执行应用程序通过 HTTP 调用从用户那里接受的一些后台任务。

在开发模式下一切正常。在具有相同 puma 服务器的生产环境中运行,@queue_processor显示已死(来自 rails 控制台):

首先,对我来说(温和地说)一个线程如何毫无例外地死亡并在上面的循环中返回 false 对我来说并不明显process_op_queue。其他非常有趣的事实是:

  1. 实际上有一个线程在做对我来说显而易见的工作,同时对应用程序进行请求并查看数据库中的哪些变化
  2. 在 Rails 控制台中,我只看到一个线程:

.

该应用程序的一部分正在检查队列处理器线程并报告错误,因此显示为已死确实打破了该逻辑。任何建议如何调试和解决问题将不胜感激。谢谢你。

0 投票
1 回答
84 浏览

ruby - 您如何在 C(实际上是 swift)应用程序中完全重新初始化嵌入式 ruby​​ VM?

我正在使用 C Ruby 接口在 swift 应用程序中嵌入一个 ruby​​ 解释器(尽管,我使用的 swift 与 Imo 无关)

我觉得 Ruby必须有某种方式来完全重新初始化自己。

我正在像这样初始化虚拟机:

评估一些代码:

并像这样破坏虚拟机:

然而,第二次做这一切,我EXC_BAD_ACCESS在跑步时得到:ruby_init_loadpath()

我应该如何重新启动?