java中静态方法存储在哪,方法区还是java栈
java中静态方法存储在哪,方法区还是java栈,运行时数据又存在哪,会像非静态方法一样在java栈中创建一个栈帧么? https://www.coder.work/article/6302513https://www.fke6.com/html/18881.html
https://www.zhihu.com/question/54129548/answer/2399852601 方法区组成:字符串常量池、元空间(运行时常量池、类型信息...)
常说运行时常量池就是类信息的ConstantPool,每个class都有一个ConstantPool 存储字面量、符号引用、方法描述符、类描述符、字段描述符等等,你通过反编译就可以看到
当我们进行类加载时候就会在链接-解析阶段将符号引用替换为直接引用,说白了就是解析类方法时创建method对象,然后设置ConstantPool中符号引用所在Entry的属性指向method内存地址(非final方法存储虚方法表索引值)
静态方法/非静态方法执行是一样的,都会申请栈帧进行动态链接指向method内存地址
运行时数据又存在哪? 当然是JVM申请内存空间,运行时数据区:方法区、堆、虚拟机栈、本地方法栈、程序计数器
siegod 发表于 2022-11-27 03:50
方法区组成:字符串常量池、元空间(运行时常量池、类型信息...)
常说运行时常量池就是类信息的Consta ...
高手啊看来您对这块了解的很多
页:
[1]