每个线程都有自己的堆栈,因此会立即对内存产生影响。对于Java 6,默认线程堆栈大小为IIRC,即512k(不同的JVM
/版本可能具有不同的默认值)。使用该
-Xss选项可以调整该数字。因此,使用数百个线程将对VM消耗的内存产生影响(除非这些线程正在运行,否则可能在CPU影响不大之前)。
我已经看到客户端遇到与线程/内存相关的问题,因为它不是一个明显的链接。创建100,000个线程(使用执行程序/池等)是微不足道的,并且内存问题似乎并非直接归因于此。
如果要为许多客户端提供服务,则可能需要看一下Java NIO
API,尤其是允许进行异步网络编程的多路复用。这样一来,您只用一个线程即可处理许多客户端,从而减少了对大量线程的需求。



