Warum konnten die Architekten von Java uns nicht einfach Folgendes tun lassen:
java -jar -myProp="Hello World" myProgram.jar
Es könnte heute funktionieren, aber nehmen wir an, dass in den nächsten Java-Versionen ein -myPropArgument als JVM-Option eingeführt wird.
Wie können Sie Ihre -myPropvon der -myPropJVM-Option unterscheiden? Auf keinen Fall.
Es gibt also einen offensichtlichen Grund , Systemeigenschaften -Dzu definieren .
Anstatt -myPropanzunehmen , dass sich Ihr Programm auf eine -clientSystemeigenschaft stützt .
Es wird nicht ausgeführt:
java -jar -client="davidxxx" myProgram.jar
Sie hätten einen JVM-Fehler wie:
Nicht erkannte Option: -client = davidxxx
wie -clienteine JVM Standardoption , die keinen Wert erwartet.
Wenn Sie jedoch verwenden -D-client, ist dies jetzt in Ordnung, da hier -Dclienteine Systemeigenschaft definiert ist, die sich von der -clientStandard-JVM-Option unterscheidet:
java -jar -D-client="davidxxx" myProgram.jar
Oder indem Sie beide verwenden:
java -jar -client -D-client="davidxxx" myProgram.jar
Um weiter zu gehen, beginnen nicht alle JVM-Argumente mit -D. aber die meisten von ihnen haben einen Präfix ( -D, -X, -XX) , die in einem someway ermöglicht Namensräume zu definieren.
Sie haben verschiedene Kategorien von JVM-Argumenten:
1. Standardoptionen ( -Daber nicht nur).
Dies sind die am häufigsten verwendeten Optionen, die von allen Implementierungen der JVM unterstützt werden.
Sie verwenden , -Dum Systemeigenschaften festlegen , aber die meisten von ihnen haben keinen Präfix: -verbose, -showversion, und so für ...
2. Nicht standardmäßige Optionen (mit dem Präfix -X)
Diese Optionen sind Allzweckoptionen, die für die Java HotSpot Virtual Machine spezifisch sind.
Zum Beispiel: -Xmssize,-Xmxsize
3. Erweiterte Laufzeitoptionen (mit dem Präfix -XX)
Diese Optionen steuern das Laufzeitverhalten der Java HotSpot-VM.
4. Erweiterte JIT-Compiler-Optionen (mit dem Präfix -XX)
Diese Optionen steuern die dynamische Just-in-Time-Kompilierung (JIT), die von der Java HotSpot-VM durchgeführt wird.
5. Erweiterte Wartungsoptionen (mit dem Präfix -XX)
Diese Optionen bieten die Möglichkeit, Systeminformationen zu sammeln und ein umfangreiches Debugging durchzuführen.
6. Erweiterte Garbage Collection-Optionen (mit dem Präfix -XX)
Diese Optionen steuern, wie die Garbage Collection (GC) von der Java HotSpot-VM ausgeführt wird.