Java熱點vpm可以使用-client或-server參數運行。如果沒有指定,則根據一些規則選擇一個。如何判斷虛擬機是在服務器還是客戶端模式下運行?
是否可以告訴一個正在運行的虛擬機是否在客戶端或服務器模式下運行時在命令行中沒有指定模式?我需要在正在運行的進程之外的Windows盒子上使用它。
我知道這不是一個編程問題,但我希望它是好的,因爲它是編程有關。提前致謝。
Java熱點vpm可以使用-client或-server參數運行。如果沒有指定,則根據一些規則選擇一個。如何判斷虛擬機是在服務器還是客戶端模式下運行?
是否可以告訴一個正在運行的虛擬機是否在客戶端或服務器模式下運行時在命令行中沒有指定模式?我需要在正在運行的進程之外的Windows盒子上使用它。
我知道這不是一個編程問題,但我希望它是好的,因爲它是編程有關。提前致謝。
在Java中,你可以使用此代碼檢查:
String s = System.getProperty("java.vm.name");
// s = Java HotSpot(TM) Server VM
但是,這將是非常特定的供應商。
在命令行中,你可以使用jinfo(用於check a value of a given HotSpot VM option)
C:\>"c:\Program Files\Java\jdk1.6.0_16\bin\jps.exe" -l -m
21812 sun.tools.jps.Jps -l -m
19244 (eclipse)
C:\>"c:\Program Files\Java\jdk1.6.0_16\bin\jinfo.exe" -flag NewRatio 19244
-XX:NewRatio=12
由於:
[x86 -server: 8; x86 -client: 12]
12表示「客戶」。
連接到與jvisualvm正在運行的Java進程。這會讓你看到已經使用的JVM參數。
您可以檢索此信息連接到MBean服務器。如果您運行的是Sun VM,則會有一個名稱爲「java.lang:type = Runtime」的MBean,該屬性公開屬性「VmName」,其值與系統屬性「java.vm.name」相同。例如,對於服務器虛擬機,其值將類似於「Java HotSpot(TM)服務器虛擬機」。來自其他供應商的VM可能使用類似的機制。
您可以使用JDK中包含的工具(如jconsole或jvisualvm)連接到MBean服務器,也可以使用JMX編寫自己的工具(如果需要編程訪問),可以連接到MBean服務器。
剛剛添加jinfo possiblelity – VonC 2009-08-21 11:35:52
@Hemal因此,我使用'jinfo',嚴格限制爲'-flag'選項:它的工作 – VonC 2009-08-21 12:49:15