java - macOS 上 Java 上的 OutOfMemoryError
问题描述
我正在开发一个 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)
解决方案
推荐阅读
- javascript - Jquery方法(单击,更改)不起作用
- postgresql - 有没有办法获取用户从两个表登录时的日期?
- python - Flask - 用户到配置文件的关系
- rust - 如何重置控制台输出?清除只是将输出移回
- pytorch - nll_loss 的范围是多少?
- html - How to set the first name field on the same column as passport issue date
- php - 注意:常量 BASEURL 已经定义
- hyperledger-fabric - 无法运行在 ubuntu 上运行的自定义超级账本网络本地网络
- java - 如何使用两种类型的值解析 JSON,一种是整数,另一种是 JSON 对象?
- android - 通知图标未显示