不,我的意思是符号引用解析后生成的直接引用存在运行时常量池中了,那么符号引用存在哪里
时间: 2024-03-15 12:42:01 浏览: 76
抱歉,我的回答有误。符号引用和直接引用的关系是:在Java虚拟机加载类时,类的常量池中存储着符号引用。当Java程序调用类的方法或字段时,Java虚拟机会将符号引用解析成直接引用,然后直接引用会被存储在方法区中的运行时常量池中。因此,符号引用和直接引用都存在于Java虚拟机的内存空间中,只不过存储的位置不同。
相关问题
运行时常量池主要用于存储在编译期和运行期生成的常量池信息, 它在运行期间会对符号引用进行解析生成直接引用,并像Class文件池一样给常量加上索引方便程序访问 它相对于Class常量池来说具备动态性, 因为Class常量池里面存的都是Class文件里面早已写好的常量,这些都是在编译期写进去的, 而运行时常量池还能在运行期保存新生成的常量,像String的intern方法如果内容不一样就会把字符串内容放到字符串常量池中。 另外数字常量会存在数字常量池中。我这么说运行时常量池是否正确?
您说得非常正确。运行时常量池和Class常量池都是用来存储常量的,不同的是,Class常量池保存的是编译期确定的常量,而运行时常量池则保存编译期常量和运行期动态生成的常量,例如String类型的常量和数字常量等。在Java程序运行期间,运行时常量池会对符号引用进行解析,生成直接引用,并为常量加上索引,方便程序访问。同时,运行时常量池具备动态性,因为它还可以在运行期间保存新生成的常量,例如String的intern方法会将内容相同的字符串常量放到字符串常量池中。
符号引用被解析后存入到运行时常量池是吗?被解析后的符号引用存在哪里
是的,符号引用被解析后存入到运行时常量池中。在Java虚拟机加载类时,会将类的常量池加载到内存中,并生成一个对应的运行时常量池,其中包括了常量的实际值和符号引用的解析结果。当Java程序中使用到某个类的字段或方法时,Java虚拟机会从运行时常量池中查找对应的符号引用,并将其解析成具体的内存地址,从而实现字段访问、方法调用等操作。因此,被解析后的符号引用存在于运行时常量池中。
阅读全文
相关推荐
















