有沒有更好的方法從命令行打印系統屬性?由於我們可以設置屬性,例如從命令行讀取Java系統屬性
java -D<name>=<value> //set a system property
沒有寫一個類來做到這一點?如果不可能,爲什麼從命令行不可能/不可行?
有沒有更好的方法從命令行打印系統屬性?由於我們可以設置屬性,例如從命令行讀取Java系統屬性
java -D<name>=<value> //set a system property
沒有寫一個類來做到這一點?如果不可能,爲什麼從命令行不可能/不可行?
可以使用-XshowSettings
國旗在熱點JVM版本1.7及以上(不1.6支持):
java -XshowSettings:properties -version
的OpenJDK已經有支持此標誌自2010年底起。
見於http://marxsoftware.blogspot.de/2016/02/hotspot-jvm-XshowSettings.html
編輯二零一六年十二月十四日
Oracle的JVM附帶的工具jcmd它可以讓你看到目前在運行的JVM的標誌。請參閱:
https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr006.html
對於這種使用情況,您可以使用:
jcmd <pid> VM.system_properties
但也有很多其他有用的命令。例如:
jcmd <pid> VM.flags
jcmd <pid> VM.command_line
jcmd <pid> GC.run
看起來'VM.system_properties'只顯示「衆所周知」的屬性。有沒有辦法查看用戶創建的屬性? – 2018-01-08 21:54:59
我不知道。我建議你發佈一個問題並將其鏈接到這個問題。 – AdrianRM 2018-01-12 15:06:54
您可以使用jps jdk附帶的工具。 它可以打印出傳遞給java進程的系統屬性。
例如:在我的系統蝕正在運行,並且
$ jps -v
輸出
6632 -Dosgi.requiredJavaVersion=1.6 -Xms1024m -Xmx2048m -XX:MaxPermSize=512m
jps
位於JDK_HOME/bin
EDIT
若y ou希望所有屬性都使用位於JDK_HOME/bin
中的jinfo工具。要使用它,你必須知道你想從中獲取信息的java進程的進程ID。例如。
$ jinfo 6632
該工具還打印出java.ext.dirs
如何獲得'java.ext.dirs'的值? – sakhunzai 2014-10-20 07:27:28
系統屬性在啓動JVM時設置。在此之前,沒有什麼可讀的。 – Seelenvirtuose 2014-10-20 06:52:04
您是否想要區分默認的系統屬性和通過命令行設置/覆蓋的屬性? – Bohemian 2014-10-20 06:53:59
你在問如何讀取系統屬性? – 2014-10-20 07:01:04