java.lang.OutOfMemoryError:Eclipse中的Java堆空间,与设置无关

时间:2015-02-10 17:30:16

标签: java eclipse mahout

我正在测试一个在Eclipse中使用Mahout构建的简单推荐系统。

如果首选项文件太大,我收到此错误:

    Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at java.lang.String.substring(String.java:1939)
    at java.lang.String.subSequence(String.java:1972)
    at com.google.common.base.Splitter$SplittingIterator.computeNext(Splitter.java:612)
    at com.google.common.base.Splitter$SplittingIterator.computeNext(Splitter.java:522)
    at com.google.common.base.AbstractIterator.tryToComputeNext(AbstractIterator.java:64)
    at com.google.common.base.AbstractIterator.hasNext(AbstractIterator.java:59)
    at com.google.common.base.AbstractIterator.next(AbstractIterator.java:74)
    at org.apache.mahout.cf.taste.impl.model.file.FileDataModel.processLine(FileDataModel.java:408)
    at org.apache.mahout.cf.taste.impl.model.file.FileDataModel.processFile(FileDataModel.java:363)
    at org.apache.mahout.cf.taste.impl.model.file.FileDataModel.buildModel(FileDataModel.java:259)
    at org.apache.mahout.cf.taste.impl.model.file.FileDataModel.reload(FileDataModel.java:231)
    at org.apache.mahout.cf.taste.impl.model.file.FileDataModel.<init>(FileDataModel.java:221)
    at org.apache.mahout.cf.taste.impl.model.file.FileDataModel.<init>(FileDataModel.java:169)
    at org.apache.mahout.cf.taste.impl.model.file.FileDataModel.<init>(FileDataModel.java:149)
    at com.predictionmarketing.itemrecommend.ItemRecommend.main(ItemRecommend.java:35)

该文件包含约500万个偏好点。

我已经阅读了几个有关此问题的消息,我的eclipse.ini是以下

-startup
../../../plugins/org.eclipse.equinox.launcher_1.3.0.v20140415-2008.jar
--launcher.library
../../../plugins/org.eclipse.equinox.launcher.cocoa.macosx.x86_64_1.1.200.v20140603-1326
-product
org.eclipse.epp.package.java.product
--launcher.defaultAction
openFile
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
3000m
--launcher.defaultAction
openFile
--launcher.appendVmargs
-vmargs
-Dosgi.requiredJavaVersion=1.6
-XstartOnFirstThread
-Dorg.eclipse.swt.internal.carbon.smallFonts
-XX:MaxPermSize=3000m
-Xms3000m
-Xmx6000m
-Xdock:icon=../Resources/Eclipse.icns
-XstartOnFirstThread
-Dorg.eclipse.swt.internal.carbon.smallFonts

基本上我添加了-Xmx6000m并将-Xmx和MaxPermSize(两者)更改为3000m。 我不是很流利的Java,所以我不知道设置是否正确,但在执行过程中我可以看到像

Heap size: 55M of total 3017M max 5996 mark 55M

这似乎反映了设置。

奇怪的是,我在执行过程中看不到堆大小的增加,而且我的计算机(mac os)中的可用内存大约是800M。

问题出在哪里? 如果首选项文件较小,一切正常。

2 个答案:

答案 0 :(得分:3)

eclipse.ini设置仅用于Eclipse应用程序。

从Eclipse运行Java应用程序时,需要转到“运行”&gt;运行配置'。在Java应用程序列表中查找应用程序。在“参数”选项卡上,在“VM参数”部分输入您的内存设置。

答案 1 :(得分:0)

阅读Java Heap Space - How does -Xmx work exactly?

http://javarevisited.blogspot.gr/2011/05/java-heap-space-memory-size-jvm.html

对于每个系统,Java堆都不一样我认为在Windows中,例如默认的Java堆是60 Mb

相关问题