程序参数和VM参数之间有什么区别?
我发现只有当我将-Dcontext=web
放入VM参数时,该值才能被System.getproperty
方法读取。 我想知道这两者之间有什么区别?
程序参数是传递给程序的args
,可在main方法的args
数组中使用
public static void main(String[] args)
VM参数传递给虚拟机,旨在指示VM执行某些操作。 您可以执行诸如控制堆大小等操作。如您所述,程序可以通过调用System.getProperty()
来访问它们。
程序args可以通过main(String args [])方法的args []获得
程序参数进入main()方法:
public static void main(String[] args) // here
- 程序参数 – 我们通常传递给程序的参数。 可以使用main方法中的“args”String数组访问此类型参数。
- VM参数 – 传递给Java解释器的参数。
[![enter image description here][1]][1]Program Argument: Program arguments are arguments that are passed to your application, which are accessible via the "args" String array parameter of your main method. VM Argument: : VM argument are environment or system argument that needed by JVM to execute program. VM arguments is read from system property as below java instruction. System.getProperty(sysProp1) Code Snippet: public static void main(String[] args) { String sysProp1 = "sysProp1"; System.out.println("\t System Propery Name:" + sysProp1 + ", Value:" + System.getProperty(sysProp1)); System.out.println("\t Program Variable Test Propery Name:" + args[0]); } There are Two way to pass these two params values. From Eclipse: [1]: http://sofzh.miximages.com/java/7c0dv.jpg Command Line Argument: java -cp projectJar-2.0-SNAPSHOT-jar-with-dependencies.jar com.first.jobs.IndexJob testing -DsysProp1=testing