के लिए जावप के आउटपुट को समझना एक बहुत ही सरल हैलोवर्ल्ड एप्लिकेशन पर जावप चलाते समय मुझे निरंतर पूल के आसपास आउटपुट पर कुछ भ्रम है।कॉन्स्टेंट पूल
टेस्ट कोड
public class TestClass {
public static void main(String[] args) {
System.out.println("hello world");
}
}
Javap -c -verbose निर्गम (कतरना)
// Header + consts 1..22 snipped
const #22 = String #23; // hello world
const #23 = Asciz hello world;
public static void main(java.lang.String[]);
Signature: ([Ljava/lang/String;)V
Code:
Stack=2, Locals=1, Args_size=1
0: getstatic #16; //Field java/lang/System.out:Ljava/io/PrintStream;
3: ldc #22; //String hello world
5: invokevirtual #24; //Method java/io/PrintStream.println:(Ljava/lang/String;)V
8: return
// Debug info snipped
}
, ठीक है तो लाइन 3 पर हम देखते हैं "हैलो दुनिया" का एक धक्का निरंतर # 22 के माध्यम से ढेर पर, लेकिन const # 23 वास्तविक मान धारण करता है। मुझे लगता है कि मैं # (संख्या) का अर्थ प्रिंटआउट के दाईं ओर दिखाई देने पर थोड़ा उलझन में हूं।
Oracle/Sun's man page for javap वांछित होने के लिए बहुत अधिक छोड़ देता है।
'jdk-7' (http://bugs.sun.com/view_bug.do?bug_id=6868539) के रूप में यह' utf8' है और 'asciz' नहीं है – Eugene