gpt4 book ai didi

java - 如何解决Java错误 "pool-1-thread-xxxx"java.lang.OutOfMemory

转载 作者:行者123 更新时间:2023-12-01 16:45:37 27 4
gpt4 key购买 nike

我搜索过有关此问题的帖子,但没有看到像我这样的情况。

我的java控制台显示错误消息“pool-1-thread-xxxx”java.lang.OutOfMemory如下图所示:

pool-1-thread-OutOfMemoryError issuse

performance monitor

  • 红线:CPU 使用率
  • 绿线:内存使用情况

我已将 RAM 从 6G 增加到 10G,并在 -Xms=8G -Xmx=8G -Xmn=3G 中设置 *.bat 文件,然后再启动程序。我也一直在观察性能监视器,但内存始终在 20% 左右。我不知道怎么会发生这种事。有什么想法吗?

这是我的run.bat代码。

@echo off 
javapro @java -Xoptimize -Xms8G -Xmx8G -Xmn3G -Xss1024k -XX:+UseConcMarkSweepGC -cp javaPro.exe;
cls
run.bat
  • 操作系统:Windows Server 2012 R2
  • Java 版本:jre1.8.0_171
  • 内存:10G
  • CPU:2.5 GHz Intel Xeon(R)(超线程)

最佳答案

错误消息java.lang.OutOfMemoryError:无法创建新的 native 线程意味着

the JVM is asking a new thread from the OS and the underlying OS cannot allocate a new thread anymore.

参见OOM explanationsyour specific case explained .

因此您不会在图表中看到高内存使用量,因为堆大小尚未接近其限制。

您必须检查应用程序代码并检查其中的线程池使用情况。没有源代码很难说什么,但可能有一些建议:

  1. 如果您使用CachedThreadPoolExecutor,则提交的任务可能不够快,因此您的应用无法处理所有提交的任务。
  2. 您可以使用具有最大 (Integer.MAX_VALUE) 容量的 FixedThreadPoolExecutor,在这种情况下,您必须限制池容量及其队列大小。因此,池会吃掉所有可用线程,并发生OOM

通常,您应该始终控制线程池配置并确保它不会占用所有系统资源。

关于java - 如何解决Java错误 "pool-1-thread-xxxx"java.lang.OutOfMemory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51945268/

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