Search code examples
javajvmjvm-arguments

How to get VM arguments from inside of Java application?


I need to check if some option that can be passed to JVM is explicitly set or has its default value.

To be more specific: I need to create one specific thread with higher native stack size than the default one, but in case the user wants to take care of such things by himself by specifying the -Xss option I want to create all threads with default stack size (which will be specified by user in -Xss option).

I've checked classes like java.lang.System and java.lang.Runtime, but these aren't giving me any useful information about VM arguments.

Is there any way to get the information I need?


Solution

  • With this code you can get the JVM arguments:

    import java.lang.management.ManagementFactory;
    import java.lang.management.RuntimeMXBean;
    ...
    RuntimeMXBean runtimeMxBean = ManagementFactory.getRuntimeMXBean();
    List<String> arguments = runtimeMxBean.getInputArguments();