我正在測試一個在Eclipse中使用Mahout構建的簡單推薦系統。java.lang.OutOfMemoryError:Eclipse中的Java堆空間,不管設置如何
如果首選項文件太大,我收到此錯誤:
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)
該文件包含約5百萬首分。
我已經看了幾消息關於這個問題,我的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參數(兩者)3000米。 我不是很流利的Java的,所以我不知道,如果設置正確,但在執行過程中,我可以看到類似
Heap size: 55M of total 3017M max 5996 mark 55M
這似乎反映了設置。
奇怪的是,在執行過程中我沒有看到堆大小的增加,我的計算機(mac os)中的可用內存也在800M左右。
問題在哪裏? 如果首選項文件較小,一切工作正常。
這是一個程序,你在運行命令的Eclipse內運行?您需要在「運行>運行配置」中更改這些設置。 – 2015-02-10 17:39:03
您可以嘗試使用文件映射。這是一個有用的鏈接:http://www.javacodegeeks.com/2013/05/power-of-java-memorymapped-file.html – Mints97 2015-02-10 17:56:19
@ greg-449是的我從Eclipse運行。我打開了「運行」>「運行配置」,但哪些是我需要更改的設置? – Eugenio 2015-02-10 18:51:14