gpt4 book ai didi

java - 有可用内存的 OutOfMemoryError

转载 作者:行者123 更新时间:2023-11-29 03:40:45 25 4
gpt4 key购买 nike

我有一个使用 java 线程池在后台执行一些繁重处理的应用程序。

线程池被配置为记录执行期间发生的异常

public enum ExceptionLogger implements Thread.UncaughtExceptionHandler {
INSTANCE;

private static final Logger log = LoggerFactory.getLogger(ExceptionLogger.class);

@Override
public void uncaughtException(Thread t, Throwable e) {
log.error("Exception occurred at thread " + t.getName() + "\n", e);
}
}

在我的应用程序日志中,我随机收到 java.lang.OutOfMemoryError: Java heap space 但如果我使用 Runtime.getRuntime().freeMemory()< 记录内存使用情况 我可以看到大量可用的可用堆空间。

此外,应用程序在我收到此异常后继续工作。

是否有任何其他原因导致 OutOfMemoryError 出现此消息?

最佳答案

当内存分配失败时,您将得到一个 OutOfMemoryError。

这可能发生在什么时候

  • 你的内存用完了。
  • 您的 GC 转向参数阻止它使用所有内存。例如为未满的世代设置最小尺寸。
  • 你分配了一大块内存。在此失败后,您立即仍有可用内存,只是不足以分配大块。
  • 你得到一个 OutOfMemoryError,它不是针对堆的,例如PermGen 或直接内存或虚拟内存(用于线程等)

关于java - 有可用内存的 OutOfMemoryError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13270232/

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