校招刷题群
高效刷题 迎战校招
校招精选试题
近年面笔经面经群内分享
Java刷题群 前端刷题群 产品运营群
首页 > java语言 > 类的加载过程
题目

class常量池和运行时常量池区别是什么?

解答

当类加载到内存中后,jvm就会将class常量池中的内容存放到运行时常量池中,运行时常量池每个类都有一个。class常量池中存的是字面量和符号引用,并不是对象的实例,而是对象的符号引用值。而经过解析(resolve)之后,也就是把符号引用替换为直接引用,解析的过程会去查询全局字符串池,以保证运行时常量池所引用的字符串与全局字符串常量池中所引用的是一致的。
全局字符串池里的内容是在类加载完成,经过验证,准备阶段之后在堆中生成字符串对象实例,然后将该字符串对象实例的引用值存到string pool中(记住:string pool中存的是引用值而不是具体的实例对象,具体的实例对象是在堆中开辟的一块空间存放的)。

C 0条回复 评论

帖子还没人回复快来抢沙发