मैं अलग हार्डवेयर के तहत अलग ढंग से चलाने के लिए एक जावा एप्लेट लिख रहा हूँ। उदाहरण के लिए यदि मुझे पता है कि कंप्यूटर में बड़ी मात्रा में रैम है लेकिन एक कमजोर प्रोसेसर है, तो मैं कुछ समय-मेमोरी ट्रेड-ऑफ के संतुलन को बदल सकता हूं। सीपीयू के सटीक मेक और मॉडल को खोजने में सक्षम होने पर ऐपलेट चल रहा है सहायक हो सकता है। ऐसी जानकारी रखने से मुझे अपने सिस्टम को विभिन्न प्रणालियों के खिलाफ बेंचमार्क करने और बाधाओं को खोजने की अनुमति मिल जाएगी।जावा ऐप्पल डिस्कवर कितने हार्डवेयर विवरण कर सकते हैं?
आम तौर पर मैं क्या तलाश कर रहा हूँ है:
- कोर और/या प्रोसेसर
- 32 बिट बनाम 64 बिट सीपीयू
- सीपीयू कैश लाइन आकार
- एल 1, एल 2 का आकार की संख्या , L3 कैश कैश की
- सेट संबद्धता
- TLB
- सटीक मेक/मो का आकार CPU पर डेल जानकारी
- एफएसबी जानकारी रैम
- राशि
- स्वैप की राशि/आभासी स्मृति
- JVM जिसमें एप्लेट रन किया जा रहा है
- ऑपरेटिंग सिस्टम JVM
- सिस्टम लोड चल
- प्रयुक्त/अप्रयुक्त कर्नल धागे की संख्या
- इंटरनेट कनेक्शन की बैंडविड्थ
- मेमोर उपयोग
में y उपलब्ध
उनके कंप्यूटर हार्डवेयर जो अवरुद्ध कर रहे हैं के किसी भी पहलू हैं। यही है, जावा ऐपलेट का पता लगा सकता है कि इसका उपयोग करने के लिए कुछ उपयोग किया जा रहा है या अनुपलब्ध है और इसे अस्वीकार कर दिया जा रहा है (शायद एक विशेष टीसीपी पोर्ट या ग्राफिक्स त्वरक)।
अस्वीकरण: मुझे पता है कि हार्डवेयर के बारे में देखभाल के हार्डवेयर के बारे में देखभाल नहीं की जावा विचारधारा के खिलाफ जाता है। हालांकि टिप्पणियां यह इंगित करती हैं कि अन्य प्रश्नों के लिए यह उपयोगी हो सकता है जो इस प्रश्न को देखते हैं, कृपया ध्यान दें कि ऐसे उत्तर वे नहीं हैं जिन्हें मैं ढूंढ रहा हूं।
संपादित
जोड़ी अतिरिक्त जानकारी:
java.lang। management प्रणाली है जो JVM पर चल रहा है के बारे में जानकारी के सभी प्रकार प्रदान करता है।
java.lang.management।OperatingSystemMXBean प्रदान करता है:
- getAvailableProcessors() बराबर Runtime.availableProcessors()
- getSystemLoadAverage() औसत लोड प्रणाली अंतिम मिनट के लिए प्रणाली लोड औसत पर उपलब्ध प्रोसेसर की संख्या।
java.lang.management। ManagementFactory
getGarbageCollectorMXBeans() एक सूची ofGarbageCollectorMXBeans देता है। प्रत्येक GarbageCollectorMXBean निम्नलिखित जानकारी के लिए क्वेरी जा सकता है:
जीसी जो इस सेम का उपयोग कर हुईं का- getCollectionCount() संख्या।
- getCollectionTime() अनुमानित संचित समय जीसी के मिलीसेकंड के बीच समाप्त हो गया। (नोट: जावा आभासी मशीन कार्यान्वयन बीता हुआ समय को मापने के लिए एक उच्च संकल्प टाइमर का उपयोग कर सकते हैं।)
- getName() स्मृति प्रबंधक का नाम।
- getMemoryPoolNames() मेमोरी पूल जो इस जीसी प्रबंधन करता है।
- getCurrentThreadCpuTime() रिटर्न नैनोसेकंड में वर्तमान थ्रेड के लिए कुल सीपीयू समय:
getThreadMXBean()ThreadMXBean प्रदान करता है जो देता है। यदि कार्यान्वयन उपयोगकर्ता मोड समय और सिस्टम मोड समय के बीच अंतर करता है, तो लौटाया गया CPU समय उस समय की मात्रा है जब वर्तमान थ्रेड उपयोगकर्ता मोड या सिस्टम मोड में निष्पादित होता है।
- getRuntimeMXBean रिटर्न RuntimeMXBean
- getUptime() मिलीसेकेंड में जावा आभासी मशीन के सक्रिय रहने की अवधि।
- getStartTime() मिलीसेकंड में जावा वर्चुअल मशीन का प्रारंभ समय।
- getInputArguments() जावा वर्चुअल मशीन को पास किए गए इनपुट तर्क देता है जिसमें मुख्य विधि के तर्क शामिल नहीं हैं।
- getCompilationMXBeanCompilationMXBean
- getName() मिलीसेकेंड में JIT
- getTotalCompilationTime() समय यह अपने कोड संकलित करने के लिए ले लिया के नाम देता है।
अच्छा जवाब, मैंने बिल्कुल उपयोग नहीं किया था। जावा के खिलाफ मेमोरी कैश चाल मैं पिछले दो वर्षों से इस क्षेत्र में काम कर रहा हूं। मैं उत्सुक हूँ तुम ऐसा क्यों कर रहे थे? –
मेरे विश्वविद्यालय में कैश आर्किटेक्चर पर मेरा कोर्स था और यह जांचने का फैसला किया कि जावा में इस अनुभव का पुन: उपयोग किया जा सकता है या नहीं। जावा वास्तव में स्मृति में वस्तुओं को कैसे रखा जाता है, इस पर अधिक नियंत्रण प्रदान करता है: यदि अनुक्रम में आवंटित किया जाता है, तो आमतौर पर उन्हें एक दूसरे के बगल में आवंटित किया जाता है। इसके अलावा, आदिम सरणी के सदस्यों को एक-दूसरे के बगल में आवंटित किया जाता है। मैं सरणी तत्व पहुंच के साथ खेल रहा था, एक दूसरे के बगल में तत्वों या यादृच्छिक तत्वों को एक दूसरे से दूर कर सकता था। यादृच्छिक, व्यापक पैमाने पर पहुंच को कैश द्वारा आसानी से समर्थित नहीं किया जा सकता है और अधिक समय लगता है। –