首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java相关 >

in thread "main" java.lang.OutOfMemoryError: Java heap space

2011-11-11 
Lucene 需要索引的文本文件太大,怎么解决?我用的lucene版本是3.0.1,当我索引到某一个大文本文件是(大约有1

Lucene 需要索引的文本文件太大,怎么解决?
我用的lucene版本是3.0.1,当我索引到某一个大文本文件是(大约有10M)报了内存溢出,也就说这个字符串太大了,我试过把虚拟机最大内存设置更大(-Xmx),可以解决问题,但是我想试着改代码来解决,不知道有没有哪位朋友遇到故噢累死问题,有什么好的解决办法没有?
以下是部分代码

Java code
String content = FileUtils.readFileToString(file, "UTF-8");Document document = new Document();document.add(new Field("content",content,Field.Store.YES,Field.Index.ANALYZED));document.add(new Field("path",file.getAbsolutePath(),Field.Store.YES,Field.Index.NOT_ANALYZED));indexWriter.addDocument(document);

抛出的异常:
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Arrays.java:2882)
at java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:100)
at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:515)

[解决办法]
可以把大文件读出之后写入几个小的文件。然后再每个小的文件来索引吧。这是一个可行的办法。
另外一个就是,你可以设置只索引大文件前多少部分啊 ?比如说设置一下只索引前n行的内容。不知道有没有这个功能。如果没有的话你可以自己写一个。

热点排行