Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

JVM option -Xss - What does it do exactly?

People also ask

What is option in JVM?

Use these options to configure your JVM. The options prefixed with -X are nonstandard. Options that relate to the JIT are listed under JIT and AOT command-line options. Options that relate to the Garbage Collector are listed under Garbage Collector command-line options.

What is JVM and how does it work?

JVM(Java Virtual Machine) acts as a run-time engine to run Java applications. JVM is the one that actually calls the main method present in a java code. JVM is a part of JRE(Java Runtime Environment). Java applications are called WORA (Write Once Run Anywhere).

Do I need a JVM?

This is where the JVM comes in, it takes the bytecode and then turns it into machine code that the computer can execute. So you need a JVM to run the bytecode produced by a java compiler, although you don't have to specifically have one installed.

Where do I put JVM options?

To update JVM options manually for an MSI installation: jvmoptions file. For an MSI distribution the file is located in the %programdata%\JetBrains\YouTrack\conf directory. Edit the JVM options directly in the file.


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!)


Each thread has a stack which used for local variables and internal values. The stack size limits how deep your calls can be. Generally this is not something you need to change.


If I am not mistaken, this is what tells the JVM how much successive calls it will accept before issuing a StackOverflowError. Not something you wish to change generally.