2010-06-29 9 views
14

मैं सीखना चाहता हूं कि कैसे, या यदि ब्लैक-बॉक्स जावा एप्लिकेशन (इसके डेटा को पढ़कर) के साथ प्रोग्रामेटिक रूप से बातचीत करने के लिए यह संभव है। क्या इस तरह की चीज करने पर कोई पिछला शोध/काम रहा है?क्या चल रहे जावा एप्लिकेशन की स्मृति को पढ़ना संभव है?

मुझे लगता है कि एक JVM पर चलने से चीजों को जटिलता मिलती है।

@anon: किसी भी JVM के साथ ऐसा करना प्रासंगिक है। क्या आपको java एप्लिकेशन से डेटा निकालने के लिए स्मृति को आवंटित करने के तरीके के बारे में विनिर्देशों को जानना या नियंत्रित करना है?

+1

मनमाने ढंग से जेवीएम, या एक विशेष वाणिज्यिक जेवीएम, या एक जेवीएम पर चल रहा है जिसे आपने विशेष रूप से इस उद्देश्य के लिए विकसित किया है? वास्तविक व्यक्ति की बजाय वर्चुअल मशीन पर चलना चीजों को आसान बनाता है * यदि आप वीएम आंतरिक को नियंत्रित करते हैं, और यहां तक ​​कि यदि आप नहीं करते हैं, तो यह तब तक कठिन नहीं होता है जब तक आप जानते हैं कि वे आंतरिक क्या हैं। –

+0

एक संबंधित धागा जो यहां लागू होना चाहिए: http://stackoverflow.com/questions/2771868/can-i-access-object-from-another-jvms-memory-without-requesting-that-jvm – Greg

+1

शायद डीबगर इंटरफ़ेस सहायता करता है http://java.sun.com/j2se/1.3/docs/guide/jpda/jvmdi-spec.html – josefx

उत्तर

2

आप java.lang.instrument पर देख सकते हैं। जब तक आप एप्लिकेशन की कक्षा संरचना को समझते हैं, तो यह आपको पहले से चल रहे जेवीएम में विधियों को संशोधित करने देगा और आप एक ऐसे तरीके से concoct करने में सक्षम हो सकते हैं जो आपको संचार करने के लिए पर्याप्त डेटा निकालने या डालने की अनुमति देता है (विधियों पर निर्भर करता है बेशक उपलब्ध है)।

+0

धन्यवाद, मैंने कभी इसके बारे में नहीं सुना था और यह आशाजनक लग रहा है। मैं इसे प्रोफाइलिंग टूल के साथ संयोजन में उपयोग करने की कल्पना करता हूं, अन्य उत्तरों का उल्लेख भी सहायक हो सकता है। –

0

मैकगिल विश्वविद्यालय में Sable समूह ने जावा दुनिया में बहुत सारे शोध किए हैं।

अधिकांश काम अपेक्षाकृत प्राप्त हो रहा है, लेकिन आपको EVolve प्रोजेक्ट में कुछ मदद मिल सकती है जिसमें ऑब्जेक्ट उन्मुख प्रोग्रामों को देखने का लक्ष्य है। उनकी परियोजनाओं में से कुछ को सक्रिय रूप से बनाए रखने के लिए दिखाई देते हैं (जैसे Soot, उनके जावा अनुकूलन ढांचे के रूप में), तो आपको भाग्य उनसे सीधे संपर्क

0

मेरा मानना ​​है कि क्या आप देख रहे हैं क्या Eclipse MAT करता है मिल सकती है तो। आप स्रोत कोड पर एक नज़र लेने के लिए चाहते हो सकता है ...

0

हॉटस्पॉट JVM आप एक प्रोफाइलर से एक agentlib (Open Source Java Profilers या Your Kit की तरह विज्ञापनों में देखें), प्रोफाइलर में आप तो स्मृति निरीक्षण कर सकते हैं अप हुक करने की अनुमति देता है/सीपीयू/धागे इत्यादि यदि आप बहुत विशिष्ट चीजें चाहते हैं तो आप अपना खुद का एजेंटलिब बनाना चाहते हैं जो आपको जेवीएम की आवश्यकता के बारे में जानकारी भेजता है।

1

उदाहरण के लिए, StackTrace के साथ यह आसानी से संभव है। यह एक जावा प्रक्रिया से जुड़ा हो सकता है और आपको बीनशेल के साथ लगभग हर चीज का निरीक्षण और परिवर्तन करने देता है।

+0

ऐसा लगता है कि लिंक टूटा हुआ है? –

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