1

使用 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

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

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

当我切换到另一个 ruby​​ 时ruby-head,一切正常。

4

3 回答 3

2

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

rvm get head
rvm reinstall jruby
于 2013-03-20T13:03:30.143 回答
0

你运行的是什么操作系统?JAVA OPTS 环境变量设置为什么?在标准配置下,JRuby 消耗 7GB 听起来不太可能——在我见过的环境中,-J-Xmx 通常设置为 1024mb 之类的正常值,并且您必须显式覆盖它以向 JVM 分配更多内存。

尝试发出命令:

jruby -J-Xmx1024m -S gem env

并在此处发布内容。

于 2013-03-20T11:11:06.993 回答
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)起作用。错误消息是相同的,只是它们反映了新的“安全上限”大小。

于 2014-03-08T20:10:17.540 回答