JVM option -Xss - What does it do exactly?
Each thread in a Java application has its own stack. The stack is used to hold return addresses, function/method call arguments, etc. So if a thread tends to process large structures via recursive algorithms, it may need a large stack for all those return addresses and such. With the Sun JVM, you can set that size via that parameter.
It indeed sets the stack size on a JVM.
You should touch it in either of these two situations:
- StackOverflowError (the stack size is greater than the limit), increase the value
- OutOfMemoryError: unable to create new native thread (too many threads, each thread has a large stack), decrease it.
The latter usually comes when your Xss is set too large - then you need to balance it (testing!)