2011-01-27 65 views
0

您好我嘗試過使用Lucene插件的程序。我有多個索引,用於搜索我使用「ParallelMultiSearcher」的多個索引。但在搜索時,我一次又一次地得到異常「線程中的異常」「線程-2」java.lang.OutOfMemoryError:請求的數組大小超過VM限制「。我使用eclipse Helio IDE,UBUNTU 10.04操作系統(32位)。 3GB RAM。 Lucene 3.0.3版本。 10個索引文件,每個包含100個記錄(csv文件,10個字段)。 VM參數設置-Xmx1024m -XX:MaxPermSize = 1024m。但我試圖增加,有些時候我得到虛擬機初始化期間發生錯誤無法爲對象堆預留足夠的空間。即使我縮小了文件大小並嘗試了,而改爲10個文件,我減少到1個文件,一次又一次,我得到相同的錯誤。請爲上述建議解決方案。預先感謝您......使用Lucene時Java異常

+0

你能粘貼你的代碼嗎?因爲您的數據太小而不會導致此類異常。我得到了同樣的例外,但是使用40GB索引(分解爲10個索引)。你可能在你的代碼中有一個錯誤。 – Skarab 2011-01-28 11:49:52

+0

在本次討論中檢查Kai Chan的建議 - http://stackoverflow.com/questions/3556870/what-is-the-biggest-size-number-of-documents-of-index-java-lucene-3-0- 2-on-32。 – Skarab 2011-01-28 11:51:34

回答

0

在32位Ubuntu上,JVM進程在遇到硬件強制限制之前可能會要求2Gb的堆內存。通過請求1Gb的permgen堆,你已經燒掉了一半。這似乎方式對我來說太多了。試用〜1.8Gb的普通堆和200Mb的permgen。