2009-08-21 10 views
11

जावा हॉटस्पॉट वीपीएम-क्लाइंट या -सर्वर तर्क के साथ चलाया जा सकता है। यदि न तो निर्दिष्ट किया गया है तो यह कुछ नियमों के अनुसार एक चुनता है।कैसे बताना है कि सर्वर या क्लाइंट मोड में वीएम चल रहा है या नहीं?

क्या यह बताना संभव है कि क्या चल रहा वीएम क्लाइंट या सर्वर मोड में चल रहा है जब मोड कमांड लाइन पर निर्दिष्ट नहीं है? मुझे इसे चल रहे प्रक्रिया के बाहर एक विंडोज बॉक्स पर चाहिए।

मुझे एहसास है कि यह प्रोग्रामिंग प्रश्न नहीं है, लेकिन मुझे आशा है कि यह ठीक है क्योंकि यह प्रोग्रामिंग से संबंधित है। अग्रिम में धन्यवाद।

+1

बस जिन्फो possiblity – VonC

+0

@Hemal इसलिए मेरा उपयोग 'jinfo' का उपयोग, सख्ती से '-flag' विकल्प तक सीमित है: यह – VonC

उत्तर

4

जावा में, आप इस कोड के साथ इस जांच कर सकता है:

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 

के बाद से:

  • यह वास्तव में NewRatio Hotpot option और
  • प्रलेखन निर्दिष्ट करता है स्थापित करने के लिए दुर्लभ है: नए/पुराने पीढ़ी के आकार का अनुपात। [x86 -server: 8; x86 -client: 12]

12 का अर्थ है "ग्राहक"।

+0

काम करता है मुझे कमांड लाइन पर इसकी आवश्यकता है, लेकिन दुर्भाग्य से jinfo विंडोज पर इसका समर्थन नहीं करता है, जहां मुझे इसकी आवश्यकता है। –

+1

रिटर्न स्ट्रिंग विक्रेता विशिष्ट है, लेकिन संपूर्ण क्लाइंट बनाम सर्वर वीएम मुद्दा विक्रेता विशिष्ट भी है। – beetstra

+0

@ हेमल: यदि आप जेडीके 6 की प्रतिलिपि बना सकते हैं, तो आप विंडोज – VonC

5

jvisualvm के साथ चल रही जावा प्रक्रिया से कनेक्ट करें। यह आपको जेवीएम तर्कों का उपयोग करने देगा जो उपयोग किए गए हैं।

0

JVM -debug के साथ शुरू किया है, तो आप jdb का उपयोग कर इसे कनेक्ट कर सकते हैं, और eval का उपयोग करें ...

eval System.getProperty("java.vm.name"); 

कि या jinfo

2

आप इस जानकारी MBean से कनेक्ट कर प्राप्त कर सकते हैं सर्वर। यदि आप एक सन वीएम चला रहे हैं, तो आपके पास "java.lang: type = runtime" नाम वाला एक एमबीन है जो "VmName" विशेषता का खुलासा करता है, जिसका मान सिस्टम प्रॉपर्टी "java.vm.name" जैसा ही है। उदाहरण के लिए, सर्वर vm के लिए मान "जावा हॉटस्पॉट (टीएम) सर्वर वीएम" जैसा कुछ होगा। अन्य विक्रेताओं से वीएम एक समान तंत्र का उपयोग कर सकते हैं।

यदि आप प्रोग्रामेटिक एक्सेस की आवश्यकता है तो आप जेडीके में शामिल टूल का उपयोग कर जेककेन या जेविसुअलवीएम जैसे टूल का उपयोग करके या JMX का उपयोग करके अपने स्वयं के टूल लिखकर एमबीन सर्वर से कनेक्ट कर सकते हैं।

संबंधित मुद्दे