दिलचस्प पोस्ट
सी में जटिल संख्याओं के साथ कैसे काम करें? मुझे एक लिस्टेड लिस्टेड लिस्ट का उपयोग कब करना चाहिए मापदंडों के साथ एक विधि नाम से एक चयनकर्ता बनाना कोड की "कॉपी और पेस्ट" खतरनाक क्यों है? शेल में पाइप के साथ n आज्ञाओं को कनेक्ट करना? अजगर – कैसे प्रोग्राम बनाने के लिए कोड के शीर्ष पर वापस जाने के बजाय वैश्विक चर का उपयोग किए बिना अन्य कार्यों से चर तक पहुंच मैं एक प्रकार की श्रेणी में वर्ग कोष्ठों से कैसे बच सकता हूं? इन खंडों को पैरामीटर करने के लिए जेडीबीसी का उपयोग करने का सबसे अच्छा तरीका क्या है? क्या सभी डेटा एक ही आकार में सभी डेटा प्रकारों के लिए एक प्लेटफॉर्म में इंगित करते हैं? MySQL संसाधित प्रक्रिया बनाम जटिल क्वेरी स्थिर संदर्भ साफ़ कर दिए गए हैं – यदि अप्रयुक्त उपयोग किए जाने पर रनटाइम पर एंड्रॉइड अनलोड क्लासेस करता है? cmake add_custom_command PHP – और / या कीवर्ड निकटतम मान ढूँढना और पायथन में सरणी के सूचक को वापस करना

कैसे मैं जावा में सीपीयू और मेमोरी उपयोग की जांच?

मुझे जावा में सर्वर के लिए सीपीयू और मेमोरी उपयोग की जांच करने की जरूरत है, किसी को पता है कि यह कैसे किया जा सकता है?

Solutions Collecting From Web of "कैसे मैं जावा में सीपीयू और मेमोरी उपयोग की जांच?"

यदि आप विशेष रूप से जेवीएम मेमोरी में दिख रहे हैं:

Runtime runtime = Runtime.getRuntime(); NumberFormat format = NumberFormat.getInstance(); StringBuilder sb = new StringBuilder(); long maxMemory = runtime.maxMemory(); long allocatedMemory = runtime.totalMemory(); long freeMemory = runtime.freeMemory(); sb.append("free memory: " + format.format(freeMemory / 1024) + "<br/>"); sb.append("allocated memory: " + format.format(allocatedMemory / 1024) + "<br/>"); sb.append("max memory: " + format.format(maxMemory / 1024) + "<br/>"); sb.append("total free memory: " + format.format((freeMemory + (maxMemory - allocatedMemory)) / 1024) + "<br/>"); 

हालांकि, इन्हें केवल एक अनुमान लेना चाहिए …

 package mkd.Utils; import java.io.File; import java.text.NumberFormat; public class systemInfo { private Runtime runtime = Runtime.getRuntime(); public String Info() { StringBuilder sb = new StringBuilder(); sb.append(this.OsInfo()); sb.append(this.MemInfo()); sb.append(this.DiskInfo()); return sb.toString(); } public String OSname() { return System.getProperty("os.name"); } public String OSversion() { return System.getProperty("os.version"); } public String OsArch() { return System.getProperty("os.arch"); } public long totalMem() { return Runtime.getRuntime().totalMemory(); } public long usedMem() { return Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory(); } public String MemInfo() { NumberFormat format = NumberFormat.getInstance(); StringBuilder sb = new StringBuilder(); long maxMemory = runtime.maxMemory(); long allocatedMemory = runtime.totalMemory(); long freeMemory = runtime.freeMemory(); sb.append("Free memory: "); sb.append(format.format(freeMemory / 1024)); sb.append("<br/>"); sb.append("Allocated memory: "); sb.append(format.format(allocatedMemory / 1024)); sb.append("<br/>"); sb.append("Max memory: "); sb.append(format.format(maxMemory / 1024)); sb.append("<br/>"); sb.append("Total free memory: "); sb.append(format.format((freeMemory + (maxMemory - allocatedMemory)) / 1024)); sb.append("<br/>"); return sb.toString(); } public String OsInfo() { StringBuilder sb = new StringBuilder(); sb.append("OS: "); sb.append(this.OSname()); sb.append("<br/>"); sb.append("Version: "); sb.append(this.OSversion()); sb.append("<br/>"); sb.append(": "); sb.append(this.OsArch()); sb.append("<br/>"); sb.append("Available processors (cores): "); sb.append(runtime.availableProcessors()); sb.append("<br/>"); return sb.toString(); } public String DiskInfo() { /* Get a list of all filesystem roots on this system */ File[] roots = File.listRoots(); StringBuilder sb = new StringBuilder(); /* For each filesystem root, print some info */ for (File root : roots) { sb.append("File system root: "); sb.append(root.getAbsolutePath()); sb.append("<br/>"); sb.append("Total space (bytes): "); sb.append(root.getTotalSpace()); sb.append("<br/>"); sb.append("Free space (bytes): "); sb.append(root.getFreeSpace()); sb.append("<br/>"); sb.append("Usable space (bytes): "); sb.append(root.getUsableSpace()); sb.append("<br/>"); } return sb.toString(); } } 

यदि आप सूर्य जेवीएम का उपयोग कर रहे हैं, और आवेदन के आंतरिक मेमोरी उपयोग में दिलचस्पी रखते हैं (आवंटित मेमोरी में आपका ऐप कितना उपयोग कर रहा है) मैं जेवीएम निर्मित कचरा संग्रहण लॉगिंग को चालू करना पसंद करता हूं I आप केवल स्टार्टअप कमांड के लिए -वर्बोज़: जीसी जोड़ें।

सूर्य के दस्तावेज़ से:

कमांड लाइन तर्क -वरबोस: जीसी हर संग्रह में जानकारी प्रिंट करता है। ध्यान दें कि -वर्बोज़ का प्रारूप: जीसी आउटपुट J2SE प्लेटफॉर्म के रिलीज के बीच परिवर्तन के अधीन है। उदाहरण के लिए, यहां बड़े सर्वर अनुप्रयोग से आउटपुट दिया गया है:

 [GC 325407K->83000K(776768K), 0.2300771 secs] [GC 325816K->83372K(776768K), 0.2454258 secs] [Full GC 267628K->83769K(776768K), 1.8479984 secs] 

यहाँ हम दो छोटे संग्रह और एक प्रमुख एक को देखते हैं। तीर के पहले और बाद के नंबर

 325407K->83000K (in the first line) 

क्रमशः कचरा संग्रहण से पहले और बाद में जीवित वस्तुओं के संयुक्त आकार को इंगित करते हैं। गौण संग्रह के बाद गिनती में ऐसी चीजें शामिल होती हैं जो जरूरी नहीं जीवित हैं लेकिन फिर से स्वीकार नहीं की जा सकतीं, या तो वे प्रत्यक्ष रूप से जीवित हैं, या क्योंकि वे अंदर हैं या समकक्ष पीढ़ी से संदर्भित हैं। कोष्ठक में संख्या

 (776768K) (in the first line) 

स्थायी उपलब्धि में जगह की गिनती नहीं करते, जो कुल उपलब्ध स्थान है, जो कुल हीप घटाकर शेष जीवों में से एक है। मामूली संग्रह के बारे में एक चौथाई एक दूसरे के बारे में ले लिया।

 0.2300771 secs (in the first line) 

अधिक जानकारी के लिए देखें: http://java.sun.com/docs/hotspot/gc5.0/gc_tuning_5.html

यहां से

  OperatingSystemMXBean operatingSystemMXBean = (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean(); RuntimeMXBean runtimeMXBean = ManagementFactory.getRuntimeMXBean(); int availableProcessors = operatingSystemMXBean.getAvailableProcessors(); long prevUpTime = runtimeMXBean.getUptime(); long prevProcessCpuTime = operatingSystemMXBean.getProcessCpuTime(); double cpuUsage; try { Thread.sleep(500); } catch (Exception ignored) { } operatingSystemMXBean = (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean(); long upTime = runtimeMXBean.getUptime(); long processCpuTime = operatingSystemMXBean.getProcessCpuTime(); long elapsedCpu = processCpuTime - prevProcessCpuTime; long elapsedTime = upTime - prevUpTime; cpuUsage = Math.min(99F, elapsedCpu / (elapsedTime * 10000F * availableProcessors)); System.out.println("Java CPU: " + cpuUsage); 

जेएमएक्स, एमएक्सबेन्स (थ्रेड मैक्सबीन आदि) प्रदान किए गए हैं, मेमोरी और सीपीयू उपयोग।

 OperatingSystemMXBean operatingSystemMXBean = (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean(); operatingSystemMXBean.getSystemCpuLoad(); 

स्मृति उपयोग के लिए, निम्नलिखित कार्य करेगा,

 long total = Runtime.getRuntime().totalMemory(); long used = Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory(); 

सीपीयू उपयोग के लिए, आपको इसे मापने के लिए बाहरी अनुप्रयोग का उपयोग करना होगा।

जावा 1.5 के बाद से जेडीके एक नए उपकरण के साथ आता है: जेसीनसोल आपको 1.5 और बाद के जेवीएम के सीपीयू और मेमोरी उपयोग दिखा सकता है। यह इन मापदंडों के चार्ट, सीएसवी को निर्यात कर सकता है, लोड किए गए वर्गों की संख्या, उदाहरणों की संख्या, डेडलॉक, थ्रेड्स इत्यादि …

यदि आप रनटाइम / कुल मेमोरी समाधान का उपयोग करते हैं जो कई सारे जवाबों में पोस्ट किया गया है (मैंने बहुत कुछ किया है), तो सुनिश्चित करें कि आप दो कचरा संग्रहण पहले से लागू करें यदि आप काफी सटीक / लगातार परिणाम चाहते हैं

कार्यक्षमता के लिए जावा आमतौर पर एक जीसी को मजबूती से पहले सभी मेमोरी को भरने की अनुमति देता है, और तब भी यह पूरी तरह से पूर्ण जीसी नहीं है, इसलिए रनटाइम के लिए आपके परिणाम। फ्रीममोरी () हमेशा "असली" मात्रा के मुक्त स्मृति के बीच कहीं और 0 ।

पहले जीसी को सब कुछ नहीं मिलता है, यह इसमें से अधिकतर मिलता है।

उतार-चढ़ाव यह है कि यदि आप निशुल्क मेमोरी () कॉल करते हैं तो आपको एक नंबर मिलेगा जो बिल्कुल बेकार है और व्यापक रूप से भिन्न होता है, लेकिन 2 जीसी के पहले यह एक बहुत ही विश्वसनीय गेज है। यह भी बहुत धीमी गति से (सेकंड्स, संभवतः) बनाता है

मेगाबाइट्स में वर्तमान स्मृति उपयोग की गणना करने के लिए यहां कुछ सरल कोड है:

 double currentMemory = ( (double)((double)(Runtime.getRuntime().totalMemory()/1024)/1024))- ((double)((double)(Runtime.getRuntime().freeMemory()/1024)/1024)); 

जावा की रनटाइम ऑब्जेक्ट जेवीएम के मेमरी उपयोग की रिपोर्ट कर सकती है। सीपीयू खपत के लिए आपको एक बाहरी उपयोगिता का उपयोग करना होगा, जैसे यूनिक्स की शीर्ष या विंडोज प्रोसेस मैनेजर

मैं CPU लोड को ट्रैक करने के लिए निम्नलिखित तरीके भी जोड़ूंगा:

 import java.lang.management.ManagementFactory; import com.sun.management.OperatingSystemMXBean; double getCpuLoad() { OperatingSystemMXBean osBean = (com.sun.management.OperatingSystemMXBean) ManagementFactory. getPlatformMXBeans(OperatingSystemMXBean.class); return osBean.getProcessCpuLoad(); } 

आप यहां अधिक पढ़ सकते हैं

JConsole चल रहे जावा अनुप्रयोग की निगरानी करने का एक आसान तरीका है या आप अपने आवेदन पर अधिक विस्तृत जानकारी प्राप्त करने के लिए एक प्रोफेसर का उपयोग कर सकते हैं। मुझे इस के लिए नेटबींस प्रोफाइलर का इस्तेमाल करना पसंद है I

आपकाकिट जावा प्रोफाइलर एक उत्कृष्ट व्यावसायिक समाधान है। आप CPU प्रोफ़ाइल और मेमोरी प्रोफाइलिंग पर दस्तावेज़ में और जानकारी प्राप्त कर सकते हैं।

यदि आप टोमकैट का उपयोग कर रहे हैं, तो Psi Probe की जांच करें , जिससे आप आंतरिक और बाह्य मेमोरी खपत के साथ-साथ अन्य क्षेत्रों में भी निगरानी कर सकते हैं।

ग्रहण के लिए, आप स्मृति उपयोग और आदि के विश्लेषण के लिए टीपीटीपी (टेस्ट और प्रदर्शन उपकरण प्लेटफ़ॉर्म) का उपयोग कर सकते हैं। अधिक जानकारी