
रनटाइम JVM विश्लेषण टूलकिट क्लासेस, मेथड्स, फील्ड्स, कॉन्स्टेंट पूल और बाइटकोड का निरीक्षण करने के लिए
splinter एक jvm विश्लेषण टूलकिट है, जो उपयोगकर्ता को कक्षाओं, विधियों, फ़ील्ड्स, स्थिरांक पूल और बाइटकोड को रनटाइम पर देखने की अनुमति देता है। यह openjdk build 22.0.2+9-70 पर बनाया और परीक्षण किया गया था।
आमतौर पर, जब आप jvm के लिए एक विश्लेषण टूलकिट के बारे में सोचते हैं, तो आप सोचेंगे कि यह jni या jvmti का उपयोग करता है, लेकिन splinter ऐसा नहीं करता!
splinter वास्तव में बाहरी है और अभी इसमें ये क्षमताएं हैं:
Method और ConstMethod पर लाइव बाइटकोड डिकोड कर सकता हैदीर्घकालिक लक्ष्य इसे एक रनटाइम jvm विश्लेषण टूलकिट बनाना है, जिसके लिए:

वर्तमान कोड बेस वर्तमान में एक आधार है, लेकिन यह अभी भी कार्य करता है
इसे लिखने के समय (3/11/2026), splinter यह कर सकता है:
javaw.exe प्रक्रिया से जुड़ सकता हैjvm.dll का पता लगा सकता हैjvm.dll से HotSpot निर्यातित VMStruct तालिकाओं को हल कर सकता हैClassLoaderDataGraph के माध्यम से लोड की गई कक्षाओं को सूचीबद्ध कर सकता हैKlass और InstanceKlass का निरीक्षण कर सकता हैInstanceKlass::_fieldinfo_stream से HotSpot फ़ील्ड स्ट्रीम को डिकोड कर सकता हैMethod / ConstMethod का निरीक्षण कर सकता हैsplinter के अच्छे भागों में से एक यह है कि यह classfile-format बाइटकोड का उपयोग नहीं करता है, यह वास्तव में hotspots इंटरप्रेटर से रनटाइम बाइटकोड निर्देशों का उपयोग करता है जिसे बाद में प्रतीकात्मक वर्ग/विधि/फ़ील्ड संदर्भों के रूप में आपको वापस पढ़ा जाता है।
यह मायने रखता है क्योंकि hotspot वास्तव में रनटाइम पर कुछ निर्देशों को फिर से लिखता है। हम वर्तमान में निम्नलिखित को संभाल रहे हैं:
invokedynamic एन्कोडेड इंडेक्सfast_iaccess_0fast_igetfieldfast_aldcinvokehandle