程序参数和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