मेरे पास दो धागे के साथ एक चल रहा JVM है। क्या एसएस-मैक्स के साथ मेरे लिनक्स ओएस पर इन चल रहे धागे को देखना संभव है? मैं यह पता लगाने की कोशिश कर रहा हूं कि ओएस मेरे धागे को कितना प्राथमिकता दे रहा है। इस अन्य मुद्दे here के बारे में अधिक जानकारी।ps -axl के साथ लिनक्स पर चल रहे जावा थ्रेड को कैसे ढूंढें?
उत्तर
उपयोग
jps -v
अपने जावा प्रक्रिया को खोजने के लिए
। नमूना आउटपुट:
3825 RemoteMavenServer -Djava.awt.headless=true -Xmx512m -Dfile.encoding=MacRoman
6172 AppMain -Didea.launcher.port=7533 -Didea.launcher.bin.path=/Applications/IntelliJ IDEA 10.app/bin -Dfile.encoding=UTF-8
6175 Jps -Dapplication.home=/Library/Java/JavaVirtualMachines/1.6.0_31-b04-411.jdk/Contents/Home -Xms8m
फिर
jstack 6172
का उपयोग करें (6172 अपनी प्रक्रिया की आईडी है) JVM अंदर धागे के ढेर प्राप्त करने के लिए। इससे थ्रेड प्राथमिकता मिल सकती है। नमूना आउटपुट:
.....
"main" **prio=5** tid=7ff255800800 nid=0x104bec000 waiting on condition [104beb000]
java.lang.Thread.State: TIMED_WAITING (sleeping)
at java.lang.Thread.sleep(Native Method)
at au.com.byr.Sample.main(Sample.java:11)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
.....
आनंद लें!
संपादित करें: यदि आवेदन आपके से अलग उपयोगकर्ता के तहत चल रहा है (उत्पादन और अन्य गैर-स्थानीय वातावरण पर सामान्य मामला) तो jps/jstack sudo के माध्यम से चलाया जाना चाहिए। उदाहरण:
sudo jps -v
sudo jstack 6172
लिनक्स पर, सूर्य/ओरेकल जेवीएम देशी लिनक्स धागे का उपयोग कर जावा थ्रेड लागू करता है, इसलिए हाँ, आप उन्हें "ps" आउटपुट में देख सकते हैं। java
प्रक्रिया से संबंधित कोई भी थ्रेड जावा थ्रेड है। लेकिन आप धागे के नाम नहीं देख पाएंगे, क्योंकि वे जावा के लिए विशिष्ट हैं और ओएस उनके बारे में नहीं जानता है।
लिनक्स धागे में आईडी हैं, लेकिन वे केवल संख्याएं हैं, और "ps axl" उन्हें नहीं दिखाती है। "पीएस-एलएलएफ", "एलडब्लूपी" कॉलम में करता है। ("एलडब्ल्यूपी" "लाइटवेट प्रक्रिया" के लिए छोटा है, जो थ्रेड के लिए एक और नाम है।) जावा के भीतर, Thread.getId()
विधि "ps -eLf" आउटपुट में दिखाई देने वाले एलडब्ल्यूपी नंबर को वापस कर सकता है, लेकिन मैं नहीं हूं ज़रूर।
ps(1)
थ्रेड-चयनकर्ता स्विच H
प्रक्रियाओं के रूप में धागे दिखाने के लिए ps(1)
से पूछेगा। (जो मोटे तौर पर है कि वे किस तरह वैसे भी लागू किया जाता है।)
देखें:
$ ps axl | wc -l
163
$ ps axlH | wc -l
325
जाहिर है मुझे मिल गया है थ्रेडेड प्रक्रियाओं का एक बहुत अभी चल रहा है।
में एलडब्ल्यूपी आईडी शीर्ष/htop के साथ भी काम करता है। इसे शुरू करें और थ्रेड मोड – moodywoody
आप विशेष जावा थ्रेड से जुड़े मूल टीआईडी प्राप्त करने के लिए मूल कोड में जेएनआई कूद सकते हैं। फिर ओएस कमांड या procfs का उपयोग करें क्योंकि अन्य ने सुझाव दिया है या जावा के बैक के विवरण को बेहतर तरीके से भेज दिया है।
उदाहरण: मूल कोड
JNIEXPORT jlong JNICALL Java_nativeGetThreadId(JNIEnv * env, jobject obj) {
jlong threadId;
threadId = (jlong)gettid();
return threadId;
}
के लिए एच दबाएं यह समझाएगा कि यह कैसे किया जाता है। – JohnPristine
@ जॉन प्रिस्टीन मैं मूल उदाहरण जोड़ूंगा। – Java42
आप JDK स्थापित किया है, तो आप धागे को देखने के लिए एक उपकरण jvisualvm कहा जाता है का उपयोग कर सकते हैं -
विजुअल वीएम शायद सबसे अच्छा टूल है कि आपके पास सर्वर को लक्षित करने के लिए बंदरगाह खुले हैं। –
- विकल्प एच "ऑन" के साथ शीर्ष पर धागे आईडी ढूंढें, और थ्रेड पीआईडी
- थ्रेड डंप बनाएं और अपने धागे के ढेर को ढूंढें।हेक्स प्रारूप में पीआईडी हैं।
यहां वर्णित सभी विधियां ठीक काम करती हैं। मैं कुछ इसी तरह की खोज भी कर रहा था और इस blog में तिमुर अक्मादेव द्वारा आया था। मुझे उम्मीद है यह मदद करेगा।
संपादित करें:
एक * nux आधारित प्रणाली पर पहली बार एक
top -H
करने के लिए क्या:
मैं साथी प्रोग्रामर द्वारा बताया गया है, के बाद एक पोस्ट के तैमूर द्वारा सार है प्रति-थ्रेड आधार पर आपको CPU उपयोग दिखाएं। उपयोगकर्ता को ऑरैकल के रूप में और जावा के रूप में कमांड में देखें। इस प्रक्रिया के लिए पीआईडी नोट और फिर चलाने
top -H -p PID
यह एक सूची है कि सभी कार्य है कि इस प्रक्रिया (जावा कार्यक्रम) वर्तमान में प्रदर्शन कर रहा है को प्रदर्शित करता है को लाता है। इसके बाद हमें यह जानने की जरूरत है कि प्रत्येक थ्रेड क्या काम कर सकता है, जिसके लिए हम एक उपयोगिता का उपयोग करते हैं जो jdk प्रदान करता है, अर्थात् jstack। लिनक्स में, जावा (जेवीएम हॉटस्पॉट) धागे को कर्नेर के धागे में मैप किया जाता है।
jstack -pid_of_the_thread
एक धागा डंप में एक जावा धागा करने के लिए ओएस स्तर धागा नक़्शा बनाने के लिए, हम 16 आधार है, और के लिए "एनआईडी = $ आईडी" स्टैक ट्रेस में खोज करने के लिए लिनक्स से देशी थ्रेड ID बदलना होगा। उदाहरण के लिए, थ्रेड आईडी 7601 है 0x1db1 वह हो सकता है जिस पर आप निगरानी कर रहे थे। यदि आप आगे भविष्य में धागे क्या कर सकते हैं, इसके लिए नजर रखना चाहते हैं, यानी, इसके व्यवहार को ट्रैक करें, बदलावों को देखने के लिए बस एक शेल स्क्रिप्ट लिखें। उम्मीद है कि यह समझ में आता है।
मैं इसे यहां रखूंगा: 'echo $ ((16 # 1 डीबी 1))' – Barak1731475
- 1. जावा में चल रहे थ्रेड को मारना?
- 2. एक चल रहे थ्रेड को बाधित/मारें
- 3. जेएफआरएएम पर चल रहे थ्रेड को बंद करें
- 4. चल रहे जावा एप्लिकेशन
- 5. चल रहे जावा एप्लिकेशन
- 6. जावा के भीतर से चल रहे विन-प्रोसेस को कैसे ढूंढें और मारें?
- 7. लिनक्स में चल रहे सी ++ प्रोग्राम को डीबग कैसे करें?
- 8. चल रहे JVM
- 9. चल रहे अनुप्रयोगों को कैसे ढूंढें जावा का उपयोग करके कम से कम राज्य में हैं?
- 10. धागे में चल रहे जावा तरीके
- 11. एम्बेडेड सिस्टम पर चल रहे जावा वीएम के लिए सिफारिश
- 12. ThreadPoolExecutor के साथ, थ्रेड पूल में चल रहे धागे का नाम कैसे प्राप्त करें?
- 13. जावा में वर्तमान में चल रहे थ्रेड की संख्या को कैसे जांचें?
- 14. विंडोज पर चल रहे जावा सेवा के साथ उपयोगकर्ता गतिविधि का पता कैसे लगाया जाए?
- 15. मैंप पर चल रहे PHP
- 16. rmmod पर लिनक्स कर्नेल थ्रेड को कैसे रोकें?
- 17. ट्रम्प के साथ रिमोट मशीन पर चल रहे कमांड?
- 18. AVCaptureSession के चल रहे
- 19. लिनक्स कर्नेल बग को कैसे/कहाँ ढूंढें?
- 20. क्यों EventTxecutorService के साथ चल रहे उपयोगकर्ता थ्रेड को कचरा नहीं मिला
- 21. एक चल रहे JVM
- 22. लिनक्स प्रोसेसर/चिप आर्किटेक्चर को कैसे ढूंढें
- 23. किसी अन्य चल रहे जावा एप्लिकेशन
- 24. एंड्रॉइड में वर्तमान में चल रहे अनुप्रयोगों को प्रोग्रामेटिक रूप से कैसे ढूंढें?
- 25. लिनक्स
- 26. 100% सीपीयू ले रहे चल रहे जावा प्रोग्राम का पूरा स्टैक ट्रेस कैसे प्राप्त करें?
- 27. जावा थ्रेड किस प्रोसेसर पर चल रहा है?
- 28. एचटीएमएल 5 पर चल रहे ऑब्जेक्ट्स कैनवास
- 29. वेबसाइट पर चल रहे निरंतर संगीत
- 30. कैसे जावा से चल रहे मल्टीथ्रेडेड ज्योथन स्क्रिप्ट्स?
आप थ्रेड आईडी के साथ 'jstack' से संबंधित कर सकते हैं। आपको हेक्स से दशमलव में कनवर्ट करने की आवश्यकता होगी। – ninjalj
@ निंजालज: यह एक अच्छा जवाब हो सकता था। :) – sarnold
जेस्टैक से 'निड' मान लिनक्स पीएस आउटपुट से 'tid' से मेल खाता है। आपको हेक्स मान को दशमलव में परिवर्तित करना होगा। – rohitmohta