Questo link descrive abbastanza bene come questo errore viene generato dalla JVM: http://javaeesupportpatterns.blogspot.ro/2012/09/outofmemoryerror-unable-to-create-new.html
In sostanza è molto dipendente dal sistema operativo. Su RedHat Linux 6.5 (molto probabilmente altre distro/versione e versioni del kernel) max_threads = max_process x 2.
Il numero massimo di thread dipende molto dal numero di processi consentiti. Quale il numero massimo di processi dipende dalla memoria fisica massima installata.
Se si ha un aspetto nel file limits.conf (sulla mia RHL 6.5 è in /etc/security/limits.d/90-nproc.conf). Esercitano formare il file:
# Default limit for number of user's processes to prevent
# accidental fork bombs.
# See rhbz #432903 for reasoning.
* soft nproc **1024**
root soft nproc unlimited
Vedrai che per gli utenti non di root si tratta di 1024 (il che significa che le discussioni 2048 max).
Per vedere il numero massimo di thread che l'utente è autorizzato a creare eseguire questo comando "cat/proc/sys/kernel/threads-max" o "sysctl kernel.threads-max".
Per risolvere un problema come questo (almeno ha funzionato per me) come root è necessario aumentare l massimo consentito discussioni:
echo 10000>/proc/sys/kernel/threads-max
Questo riguarda tutti gli utenti e il root. L'utente deve disconnettersi e quindi accedere nuovamente per rendere effettive le impostazioni.
Tuttavia, se si esegue excute run() anziché start(), la JVM non creerà un nuovo thread. Non è vero? – sourcerebels
concordato. quindi, anche se uso la nuova threadClass (..) sul mio metodo di livello di servizio, non è necessario eseguire la pulizia manuale? – cometta
Perché è necessario creare Thread all'interno di Tomcat (un server Web)? Non è raccomandato Prova a trovare una soluzione alternativa: 1) un processo autonomo separato con thread che comunicano tramite RMI, JMS o un database; 2) magari usando MessageDrivenBeans e un JMS all'interno della tua applicazione web, se sei d'accordo con il passaggio a un app server J2EE come JBoss, Glassfish o Geronimo; 3) altro ... :) – helios