我们得应用又前台系统和后台管理系统两部分(应用lucene创建索引和关键字搜索,前台和后台中创建索引和关键字搜索的代码完全一样),现象描述:
如果创建索引和关键字搜索搜索都在前台系统中运行或者创建索引和搜索功能都在后台系统中运行没有问题,一切正常,但是,(a)当点击后台的创建索引,运行正常,这时,在点击前台的关键词搜索则就报异常 (b)点击前台的搜索(之前已经创建好索引),运行正常,这时,在后台点击创建索引。在(a)(b)这两种情况下都出现异常:
“java.lang.OutOfMemoryError: Java heap space” ,异常信息如下 :
2011-6-1 14:34:00 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet springmvc threw exception
java.lang.OutOfMemoryError: Java heap space
at org.wltea.analyzer.dic.DictSegment.fillSegment(DictSegment.java:167)
at org.wltea.analyzer.dic.DictSegment.fillSegment(DictSegment.java:180)
at org.wltea.analyzer.dic.DictSegment.fillSegment(DictSegment.java:180)
at org.wltea.analyzer.dic.DictSegment.fillSegment(DictSegment.java:180)
at org.wltea.analyzer.dic.DictSegment.fillSegment(DictSegment.java:156)
at org.wltea.analyzer.dic.Dictionary.loadMainDict(Dictionary.java:97)
at org.wltea.analyzer.dic.Dictionary.<init>(Dictionary.java:71)
at org.wltea.analyzer.dic.Dictionary.<clinit>(Dictionary.java:41)
at org.wltea.analyzer.cfg.Configuration.loadSegmenter(Configuration.java:110)
at org.wltea.analyzer.IKSegmentation.<init>(IKSegmentation.java:54)
at org.wltea.analyzer.lucene.IKTokenizer.<init>(IKTokenizer.java:44)
at org.wltea.analyzer.lucene.IKAnalyzer.tokenStream(IKAnalyzer.java:45)
at org.apache.lucene.analysis.Analyzer.reusableTokenStream(Analyzer.java:52)
at org.apache.lucene.index.DocInverterPerField.processFields(DocInverterPerField.java:126)
at org.apache.lucene.index.DocFieldProcessorPerThread.processDocument(DocFieldProcessorPerThread.java:246)
at org.apache.lucene.index.DocumentsWriter.updateDocument(DocumentsWriter.java:773)
at org.apache.lucene.index.DocumentsWriter.addDocument(DocumentsWriter.java:751)
at org.apache.lucene.index.IndexWriter.addDocument(IndexWriter.java:1928)
at org.apache.lucene.index.IndexWriter.addDocument(IndexWriter.java:1902)
at com.fasdq.fangdake.index.IndexNews.buildDocument(IndexNews.java:210)
at com.fasdq.fangdake.index.IndexNews.createIndexIKAnalyzer(IndexNews.java:55)
at com.fasdq.fangdake.controller.LuceneController.createIndexNews(LuceneController.java:126)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.web.servlet.mvc.multiaction.MultiActionController.invokeNamedMethod(MultiActionController.java:473)
at org.springframework.web.servlet.mvc.multiaction.MultiActionController.handleRequestInternal(MultiActionController.java:410)
at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:875)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:807)
这个问题烦了我好几天了,弄不出来了,跪求牛人们帮忙一下!十分感谢了!

解决方案 »

  1.   

    观察一下调用
    at com.fasdq.fangdake.index.IndexNews.buildDocument(IndexNews.java:210)
    at com.fasdq.fangdake.index.IndexNews.createIndexIKAnalyzer(IndexNews.java:55)
    at com.fasdq.fangdake.controller.LuceneController.createIndexNews(LuceneController.java:126)
    之前和之后的内存量
      

  2.   

    1楼完全不是解决这个问题的答案呀,呵呵......
    我和你一样,也遇到了java.lang.OutOfMemoryError: Java heap space
    我是在做多线程下载时出现的,你的还给出了哪个类哪行代码出现问题,我的没有!
    解决方法:在tomcat/conf/catalina.bat里面改运行参数: -Xmx1024M
    试下,可能对你有用,呵呵......祝你好运!!!
      

  3.   

    java.lang.OutOfMemoryError: Java heap spacejvm虚拟机问题吧!本身的堆的空间不够?
      

  4.   

    兄弟我的:"java.lang.OutOfMemoryError: Java heap space"暂时已解决,解决方法是:
    window->preferences->MyEclipse....->Servers->Tomcat->Tomcat 6.X->JDK->Optional Java VM arguments下面的文本框里加上"-Xms128m -Xmx256m-Dcom.sun.management.jmxremote=true"然后Apply
    当这里添加好后,在Launch->Create Launch Configuration->Arguments->VM arguments里就可看到刚添加的!
    然后重启tomcat,OK了!具体内存大小视情况而定!那现在就不知道你的能不能按我的方法来了,祝你好运......
      

  5.   

    弟兄们,非常感谢你们的帮助,部署在linux的服务器上是没有问题的,现在大体知道原因了:两个应用同时部署在一个tomcat上 ,应该是两个应用跑窜了,呵呵~
      

  6.   


    你这个问题肯定是java虚拟机的内存不够用才报此错误,一般可以加大虚拟机的内存
      

  7.   

    Lucene本身的的字典需要占据一定的空间,好像是几十M。
    这一部分空间是一直需要的。所以只能加大堆内存了。