使用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.3
。 gem -v
和其他类似的调用不会返回任何内容。他们启动一个java进程,抓取所有可用的RAM(最多7+ GB),运行2-3分钟,然后静默完成,没有任何影响。
我还能做些什么来解决这个问题吗?
当我切换到另一个红宝石时,如ruby-head
,一切正常。
答案 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)工作。错误消息是相同的,除了它们反映了新的“安全帽”大小。