JVM 内存结构(一)

JVM内存结构(如下)

JVM内存结构

其中方法区线程共享虚拟机本地方法栈程序计算器线程隔离,每个线程各有一份。

其中虚拟机栈结构如图
虚拟机栈结构
本地方法栈

本地方法都是由C语言去实现的,如unsafe类。

程序计数器

用来记录各个线程执行的字节码地址。

方法区
方法区结构
常量池 --- 静态常量池 (也叫class文件常量池)主要存放:
  • 字面量:例如文本字符串、final修饰的常量
  • 符号引用:例如类和接口的权限定名、字段名的名称和描述符、方法的名称和描述符。
常量池 --- 运行时常量池
  • 当类加载到内存中后,JVM就会将静态常量池中的内容存放到运行时的常量池中;运行时常量池里面存储的主要是编译期间生成的字面量、符号引用等等。
常量池 --- 字符串常量池
  • 字符串常量池,也可以理解成运行时常量池分出来的一部分,类加载到内存的时候,字符串会存储到字符串常量池里面。
案例
public class JVMTest1 {

    public static void main(String[] args) {
        Demo demo = new Demo("aaa");
        demo.printName();
    }
}

class Demo {

    private String name;

    public Demo(String name) {
        this.name = name;
    }

    public void printName() {
        System.out.println(this.name);
    }
} 

以上代码的在JVM中的分布如下图所示

截屏2021-07-26 20.06.53.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容