macOS上Java上的OutOfMemoryError

时间:2018-07-13 18:32:23

标签: java memory server out-of-memory

我正在开发一个Java服务器应用程序,该应用程序过去可以在运行Debian的PC上正常运行。最近,我将其在具有macOS High Sierra的MacMini上投入生产。直到最近,一切似乎都可以工作好几周,直到最近,我几乎每天都收到一次随机的OutOfMemoryErrors。发生这种情况时,服务器应用似乎停止响应大多数请求,因此我需要将其杀死并重新启动。

发生这种情况时,在“活动监视器”上,我的服务器应用程序正在使用大约2GB或4GB,这远低于我为该应用程序设置的限制(-Xmx8G)。

我不知道应该去哪里解决此问题,我需要您的见识。

一些注意事项:MacMini具有16GB。服务器在Java SDK 1.8上无休止地运行。它在GNU屏幕下启动。该应用程序使用了大量的HashMap,并将Lucene与FSDirectory结合使用来对文档建立索引并管理查询。

编辑:下面是错误的示例:

Exception in thread "NRT Reopen Thread" java.lang.OutOfMemoryError: unable to create new native thread
    at java.lang.Thread.start0(Native Method)
    at java.lang.Thread.start(Thread.java:717)
    at org.apache.lucene.index.ConcurrentMergeScheduler.merge(ConcurrentMergeScheduler.java:553)
    at org.apache.lucene.index.IndexWriter.maybeMerge(IndexWriter.java:2247)
    at org.apache.lucene.index.IndexWriter.getReader(IndexWriter.java:511)
    at org.apache.lucene.index.StandardDirectoryReader.doOpenFromWriter(StandardDirectoryReader.java:293)
    at org.apache.lucene.index.StandardDirectoryReader.doOpenIfChanged(StandardDirectoryReader.java:268)
    at org.apache.lucene.index.StandardDirectoryReader.doOpenIfChanged(StandardDirectoryReader.java:258)
    at org.apache.lucene.index.DirectoryReader.openIfChanged(DirectoryReader.java:140)
    at org.apache.lucene.search.SearcherManager.refreshIfNeeded(SearcherManager.java:156)
    at org.apache.lucene.search.SearcherManager.refreshIfNeeded(SearcherManager.java:58)
    at org.apache.lucene.search.ReferenceManager.doMaybeRefresh(ReferenceManager.java:176)
    at org.apache.lucene.search.ReferenceManager.maybeRefreshBlocking(ReferenceManager.java:253)
    at org.apache.lucene.search.ControlledRealTimeReopenThread.run(ControlledRealTimeReopenThread.java:226)

0 个答案:

没有答案