Jruby抓取所有可用内存并失败(在RVM上使用) - 如何解决?

时间:2013-03-20 10:38:45

标签: ruby rvm jruby

使用jruby时,即使是gem -v之类的简单命令也会失败。最初,我收到了这个错误:

Error: Your application used more stack memory than the safety cap of 2048K.
Specify -J-Xss####k to increase it (#### = cap size in KB).
Specify -w for full StackOverflowError stack trace

阅读this question之后,我已经更新了我的rvm链接问题,重新加载,重新安装jruby并导出JRUBY_OPTS=-J-Xss32768k(8192k仍然因堆栈错误而失败)Cuurently,rvm -v返回rvm 1.18.21 (latest)rvm current返回jruby-1.7.3gem -v和其他类似的调用不会返回任何内容。他们启动一个java进程,抓取所有可用的RAM(最多7+ GB),运行2-3分钟,然后静默完成,没有任何影响。

我还能做些什么来解决这个问题吗?

当我切换到另一个红宝石时,如ruby-head,一切正常。

3 个答案:

答案 0 :(得分:2)

这可能是因为旧的RVM有额外的代码来支持更旧的JRuby,更新RVM并重新安装JRuby:

rvm get head
rvm reinstall jruby

答案 1 :(得分:0)

您在运行什么操作系统? JAVA OPTS环境变量设置为什么?在标准配置下,JRuby消耗7GB的声音不太可能 - 在我看到的环境中,-J-Xmx通常设置为像1024mb那样理智,你必须明确地覆盖它以为JVM分配更多内存。

尝试发出命令:

jruby -J-Xmx1024m -S gem env

并在此处发布内容。

答案 2 :(得分:0)

最近通过brew运行MacOS 10.8.5和jruby 1.7.10, 我明白了:

jgem install mvp-0.0.8.gem --user-install
Error: Your application used more stack memory than the safety cap of 2048K.
Specify -J-Xss####k to increase it (#### = cap size in KB).
Specify -w for full StackOverflowError stack trace

虽然很多帖子都说StackOverflowError是一个rvm问题,但上面似乎没有证实这一点。

我可以在运行时解决问题:

jruby -J-Xmx1024m -S gem install mvp-0.0.8.gem  --user-install
Fetching: highline-1.6.21.gem (100%)
WARNING:  You don't have /Users/davei/.gem/jruby/1.9/bin in your PATH,
      gem executables will not run.
Successfully installed highline-1.6.21
Fetching: mini_portile-0.5.2.gem (100%)
Successfully installed mini_portile-0.5.2
Fetching: nokogiri-1.6.1-java.gem (100%)
Successfully installed nokogiri-1.6.1-java
Fetching: builder-3.2.2.gem (100%)
Successfully installed builder-3.2.2
Successfully installed mvp-0.0.8
5 gems installed

所以它看起来像jgem接口的问题。 顺便说一下,我用jgem命令尝试了许多不同的JRUBY_OPTS = -J-Xss #### k设置,没有(甚至高达1GB)工作。错误消息是相同的,除了它们反映了新的“安全帽”大小。