我想從網頁上的選定文本中提取名詞,並在顯示文本時突出顯示它們。因此,我使用OpenNLP庫進行解析並獲取列表的名詞。它運行在Java中類不帶記憶問題,但花了6-7秒顯示輸出前,但是當我運行jsp頁面的代碼中,我得到了這些錯誤:javax.servlet.ServletException:java.lang.OutOfMemoryError:Java堆空間
javax.servlet.ServletException: java.lang.OutOfMemoryError: Java heap space
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:909)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:838)
org.apache.jsp.highlightText_jsp._jspService(highlightText_jsp.java:294)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:438)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
根源
java.lang.OutOfMemoryError: Java heap space
opennlp.model.AbstractModelReader.getParameters(AbstractModelReader.java:144)
opennlp.maxent.io.GISModelReader.constructModel(GISModelReader.java:75)
opennlp.model.GenericModelReader.constructModel(GenericModelReader.java:59)
opennlp.model.AbstractModelReader.getModel(AbstractModelReader.java:87)
opennlp.tools.util.model.GenericModelSerializer.create(GenericModelSerializer.java:35)
opennlp.tools.util.model.GenericModelSerializer.create(GenericModelSerializer.java:31)
opennlp.tools.util.model.BaseModel.loadModel(BaseModel.java:231)
opennlp.tools.util.model.BaseModel.<init>(BaseModel.java:181)
opennlp.tools.postag.POSModel.<init>(POSModel.java:82)
opennlp.tools.parser.ParserModel$POSModelSerializer.create(ParserModel.java:49)
opennlp.tools.parser.ParserModel$POSModelSerializer.create(ParserModel.java:45)
opennlp.tools.util.model.BaseModel.finishLoadingArtifacts(BaseModel.java:303)
opennlp.tools.util.model.BaseModel.loadModel(BaseModel.java:240)
opennlp.tools.util.model.BaseModel.<init>(BaseModel.java:181)
opennlp.tools.parser.ParserModel.<init>(ParserModel.java:152)
model.parser.parserAction(parser.java:59)
org.apache.jsp.highlightText_jsp._jspService(highlightText_jsp.java:143)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:438)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
一些解決方案,我建議讀通過這樣做,增加的Apache Tomcat的堆內存大小:
set CATALINA_OPTS=-Xms256m -Xmx512m
,所以我將它設置爲-Xmx2g,但它給出了同樣的錯誤依然。我不認爲我需要修改JVM堆大小,(在NetBeans>屬性>運行> VM選項>設置-Xmx中右鍵單擊項目),但嘗試過但沒有成功。
從未有過這個錯誤,所以我不知道該怎麼辦。感謝任何幫助,謝謝。
您是否嘗試分析您的代碼並查看哪些對象正在創建,哪些正在使用最大內存,內存泄漏的可能性等?你的Oracle JDK帶有VisualVM,它可以讓你開始.. – anacron
我想這種方式喲是增加NetBeans堆空間,但不是Tomcat堆空間。嘗試使用jconsole或visualvm連接到tomcat,並查看堆有多少內存。 – malaguna