常量池

常量池

在Class文件结构中,最头的4个字节用于存储魔数Magic Number(0xCAFEBABE:咖啡宝贝),用于确定一个文件是否能被JVM接受,再接着4个字节用于存储版本号,前2个字节存储次版本号,后2个存储主版本号,再接着是用于存放常量的常量池,用于存放编译期生成的各种字面量和符号引用,这部分内容将在类加载后进入方法区的运行时常量池中存放。运行时常量池是方法区的一部分。

于常量的数量是不固定的,所以常量池的入口放置一个U2类型的数据(constant_pool_count)存储常量池容量计数值。

java中的常量池用于存放字面量符号引用量,字面量就是final修饰的常量。而符号引用则用于存放类的接口和全限定名、字段名称和描述符、方法名称和描述符。

方法区中的运行时常量池:并非预置入CLass文件中常量池的内容才能进入方法区运行时常量池,运行期间也可能将新的常量放入池中,这种特性被开发人员利用比较多的就是String类的intern()方法。

常量池的好处:常量池是为了避免频繁的创建和销毁对象而影响系统性能,其实现了对象的共享。节省内存空间和运行时间(比较字符串可以直接用==比较引用)。

posted @ 2021-04-22 23:33  i%2  阅读(58)  评论(0)    收藏  举报