Java的最大线程数非常有限?

ero*_*ppa 11 java memory profile multithreading memory-management

我们有一个带512Mb内存的小文本框.我们想在这个框中看到我们可以用Java创建多少个线程.令我们惊讶的是,我们不能创造很多.基本上,您可以使用-Xss设置的最小堆栈大小为64k.简单的数学将告诉你64*7000将消耗430Mb所以我们只能将它达到大约7000个线程左右然后我们遇到了这个错误:

java.lang.OutOfMemoryError: unable to create new native thread. 
Run Code Online (Sandbox Code Playgroud)

这是Java的真正限制吗?每512Mb的ram我们只能挤7k左右的线程?

Tob*_* P. 8

使用异步IO(java nio),你不需要7k线程来支持7k客户端,处理io(5?)的几个线程就足够了.
看看Netty ;)

每个客户端的一个线程是一个非常糟糕的设计.


Gno*_*upi 2

它不是编程语言,而是操作系统级别的。

更多关于它的阅读,适用于 Windows:

  • 我相信“OutOfMemoryError:无法创建新的本机线程”*可能*是由操作系统的每进程线程限制引起的,尽管它是一个OutOfMemoryError。但并不是 100% 确定。 (3认同)
  • 实际上@ConlinD是对的,进程限制也显示为内存不足错误。 (2认同)