2014-06-05 8 views
12

सिस्टम प्रोफाइलर्स, जैसे डीटी्रेस और लिनक्स perf_events, जेवीएम से स्टैक निशान प्रोफाइल करने में सक्षम हैं। अब, एक तरफ प्रतीकों (यह एक और समस्या है), डीटीआरई और perf_events दोनों कई ढेर इकट्ठा करते हैं जो केवल 1 फ्रेम हैं। ये आंशिक, अधूरे ढेर हैं।मैं सिस्टम प्रोफाइलर्स का उपयोग कर जावा स्टैक फ्रेम अनुकूलन, या प्रोफ़ाइल स्टैक को कैसे अक्षम करूं?

मैंने डीटीआरएस जेस्टैक(), और लिनक्स perf_events दोनों फ्रेम पॉइंटर और बौने स्टैक को अनदेखा करने की कोशिश की है।

मेरा मानना ​​है कि यह अनुकूलित फ्रेम संकलित हॉटस्पॉट के कारण है। क्या इस अनुकूलन को अक्षम करने का कोई तरीका है, ताकि मानक सिस्टम प्रोफाइलर्स (जैसे सोलारिस डीट्रेस, और लिनक्स परफ) काम करते हैं?

मैं पहले से ही की कोशिश की है निम्नलिखित विकल्पों: -XX: + DeoptimizeRandom -XX: MaxInlineSize = 0 -XX: -OmitStackTraceInFastThrow -XX: + UnlockDiagnosticVMOptions -XX: + ShowHiddenFrames

उत्तर

6

यह एक JVM मुद्दा है, और सबसे अच्छा बग द्वारा वर्णित है:

https://bugs.openjdk.java.net/browse/JDK-6276264

कि DTrace jstack() के साथ समस्या का वर्णन करता है, मेरा मानना ​​है कि एक ही अनुकूलन (एक रजिस्टर के रूप में फ्रेम सूचक का प्रयोग करके) perf_events तोड़ने है।

इस JDK 9. देखें में तय किया जा सकता है:

http://mail.openjdk.java.net/pipermail/hotspot-compiler-dev/2014-June/014842.html

इस जवाब देने के लिए हॉटस्पॉट डेवलपर्स के लिए धन्यवाद।

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