在使用Jruby时,我收到以下消息。
Complete Java stackTrace
java.lang.OutOfMemoryError: Java heap space
如何解决?
发布于 2011-01-16 01:08:57
TLDR:jruby -J-Xmx1024m script_you_want_to_run.rb
正如其他人所提到的,您的程序正在尝试分配超过JVM允许分配的最大大小的内存。
另外,正如其他人所提到的,您可以通过命令行使用参数-Xmx1024m (作为示例)来配置Java以允许更多的内存分配。
-Xmx是最大内存的参数,1024m是内存大小(最后的m表示兆字节)。我认为JRuby在启动JVM时已经将最大内存设置为512m,所以你可能想要更高的内存。
要使用jruby从命令行将参数发送到JVM,您需要在参数前面添加-J,因此命令行将如下所示:
jruby -J-Xmx1024m script_you_want_to_run.rb
我也同意内存泄漏的观点:如果你不是真的在处理大量的对象,你可能会看到这个错误,那么你可能会想看看你的程序有没有意想不到的副作用。
发布于 2013-09-05 21:43:45
设置JRUBY_OPTS
是最适合我的解决方案。Koray的回答中提到了这一点。
set JRUBY_OPTS=-J-Xmx2g
发布于 2013-04-08 05:54:12
使用以下命令检查jruby的JVM版本
jruby -v
如果它返回此字符串,则意味着您正在使用32位JVM,因此不能将最大堆大小设置为>=2gb
jruby 1.7.3 (1.9.3p385) 2013-02-21 dac429b on Java HotSpot(TM) Client VM 1.6.0_37-b06 [Windows 7-x86]
您需要将JAVA_HOME设置为64位版本的Java。例如:
set JAVA_HOME=C:\Program Files\Java\jdk1.7.0_09
如果您再次使用jruby -v命令,您将看到以下输出
jruby 1.7.3 (1.9.3p385) 2013-02-21 dac429b on Java HotSpot(TM) 64-Bit Server VM 1.7.0_09-b05 [Windows 7-amd64]
您可以看到,您现在使用的是64位版本的JVM。之后,您可以按如下方式设置jruby opts环境参数
set JRUBY_OPTS=-J-Xmx2g
或者您可以按如下方式运行您的程序
jruby -J-Xmx2g <your ruby program>
https://stackoverflow.com/questions/1523233
复制相似问题