gpt4 book ai didi

java - 当堆半满时出现 OutOfMemoryException

转载 作者:行者123 更新时间:2023-12-02 00:02:05 26 4
gpt4 key购买 nike

我收到 OutOfMemoryException,而堆似乎仍然有足够的剩余空间。

我自己的日志报告 - VM 内存使用了 48G 中的 22.28G

来自-XX:+PrintGCDetails -XX:+PrintAdaptiveSizePolicy -XX:+UnlockDiagnosticVMOptions -XX:+G1PrintHeapRegions的日志似乎同意仅使用48G中的25G

[Eden: 0.0B(2448.0M)->0.0B(2448.0M) Survivors: 0.0B->0.0B Heap: 24.9G(48.0G)->24.9G(48.0G)]

159.360: [G1Ergonomics (Heap Sizing) attempt heap expansion, reason: allocation request failed, allocation request: 48 bytes]
159.360: [G1Ergonomics (Heap Sizing) expand the heap, requested expansion amount: 16777216 bytes, attempted expansion amount: 16777216 bytes]
159.360: [G1Ergonomics (Heap Sizing) did not expand the heap, reason: heap already fully expanded]

该问题似乎是 G1 特有的。在 Java 8 上使用默认的 gc 算法时,在抛出 OutOfMemoryException 之前,内存利用率会更加接近 -mx48G 阈值。

我使用以下参数-XX:+UseG1GC -mx48G

最佳答案

在 Java 11 中尝试了相同的用例。它几乎在同一时间耗尽了内存,但报告内存利用率为 98%。这是有道理的。

似乎 Java 8 错误地报告了内存利用率。

关于java - 当堆半满时出现 OutOfMemoryException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58173068/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com