首页 > 解决方案 > 如何增加 Windows 服务器上的线程限制?

问题描述

根据 如何解决 Java 错误 "pool-1-thread-xxxx" java.lang.OutOfMemory。据我所知,解决问题有两个方向。要么优化源代码,要么增加线程限制。我没有源代码。我认为增加线程限制是我可以尝试的唯一方法。我一直在寻找答案,但仍然找不到正确的方法。我的操作系统是 64 位 windows server 2012。这意味着它默认为堆栈保留 1MB。阅读此https://blogs.technet.microsoft.com/markrussinovich/2009/07/05/pushing-the-limits-of-windows-processes-and-threads/后,我对线程限制感到完全困惑. 有几点我不明白:

  1. 错误消息显示“pool-1-thread-1395”。为什么限制数量只有 1395 个线程?我认为它应该比它更多。

  2. 我还阅读了一些有关虚拟内存的信息。这可能会影响线程限制。我发现我的操作系统只有 1024MB 的虚拟内存,这就是线程限制这么低的原因吗?(1024MB VM/1MB 堆栈大小 = 1024 个线程)

  3. 有一个java执行参数-xss。它表示堆栈的初始大小。如果我将其设置为 128k,是否会更改操作系统默认的 1M 堆栈大小?

任何建议将不胜感激。

机器信息:

标签: javaout-of-memorythreadpoolwindows-server

解决方案


推荐阅读