OutOfMemoryError:没有内存池的元空间被最大化

时间:2017-03-21 21:34:59

标签: java memory jenkins jvm metaspace

在实际耗尽该池的可用内存之前,我们似乎遇到了OutOfMemoryError:Metaspace。

更具体地说,一旦该池的提交金额达到最大值,我们就会出现该错误,而不是使用金额时。

以下是设置:

我们在Oracle Java 8更新121上运行Jenkins服务器,并具有以下元空间参数-XX:MetaspaceSize=10G -XX:MaxMetaspaceSize=10G。我们还有Datadog监控堆和非堆池。

我们遇到了Jenkins日志表明某个线程抛出了OutOfMemoryError:Metaspace的问题。但是,在事件发生时的Datadog中,非堆使用量显示为非常低(下图)。

起初我认为Datadog可能测量错了,但是使用jconsole我得到当前使用的匹配结果(我没有在事件发生时打开jconsole)。

我唯一的另一个结论是错误源于尝试分配更多提交的元空间,即使它与使用量之间仍有很大差距。

我是否遗漏了有关这些内存池应该如何工作的内容?

注意:我完全清楚这是一个非常大的元空间,我们可能会在某个地方发生类加载器泄漏。这是我们在试图调查泄漏时遇到的问题。

Memory tracking at the time of incident

0 个答案:

没有答案