There will be some limits imposed by your operating system and hardware configuration.
To raise the number of concurrent threads you should lower the default stacksize java -Xss 64k
.
- A Oracle 32 bit JVM will default to 320kb stack size per thread.
- For a 32 bit JVM with 2gb of addressable memory this will give you a maximum of 6.5k threads.
- A Oracle 64 bit JVM will default to 1M stack size per thread.
- For each gigabyte of memory you would get 1024 threads using the defaults.
- For Linux only:
ulimit -a
will give you the configured limits, for user processes and memory- You will only get 32k unique PIDs in linux
cat /proc/sys/kernel/pid_max
– a maximum of 32k processes. - You will get only 255k threads
cat /proc/sys/kernel/threads-max