首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >java.lang.OutOfMemoryError: Java堆空间

java.lang.OutOfMemoryError: Java堆空间
EN

Stack Overflow用户
提问于 2009-10-06 01:46:53
回答 8查看 16.2K关注 0票数 16

在使用Jruby时,我收到以下消息。

Complete Java stackTrace
java.lang.OutOfMemoryError: Java heap space

如何解决?

EN

回答 8

Stack Overflow用户

发布于 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

我也同意内存泄漏的观点:如果你不是真的在处理大量的对象,你可能会看到这个错误,那么你可能会想看看你的程序有没有意想不到的副作用。

票数 18
EN

Stack Overflow用户

发布于 2013-09-05 21:43:45

设置JRUBY_OPTS是最适合我的解决方案。Koray的回答中提到了这一点。

set JRUBY_OPTS=-J-Xmx2g
票数 10
EN

Stack Overflow用户

发布于 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>
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1523233

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档