JVM学习记录(基本知识点)
  RtHGisH6FqEm 2023年11月20日 86 0

JVM学习记录(基本知识点)_常量池


一、老生常谈,JVM的组成部分有哪些

1.类加载器(作用:将字节码文件加载到内存中的运行时数据区)

2.运行时数据区(由多个部分组成,也是我们最为普遍较为的区域,大体上讲就是运行程序,包括了程序运行的全生命周期)

3.执行引擎(作用:将字节码翻译成底层系统命令交给CPU去执行)

4.本地库接口(作用:字节码翻译过程需要使用其他语言的接口接口,这个接口就是贝蒂库接口)

二、运行时数据区的组成部分(JDK1.8版本):

1.程序计数器(作用:记录每个线程的正在执行的字节码行号,线程私有

2.java虚拟机栈(作用:存放局部变量、方法调用,每个线程运行时需要的内存,由栈帧组成,栈帧弹出,内存释放,递归会导致内存溢出,而且方法内的局部变量不一定线程安全)

3.本地方法栈(为虚拟机调用native方法服务的,hotspot已将它与虚拟机栈合并为一个)

4.java堆(作用:线程共享区,用于保存对象实例、数组等,由年轻代和老年代组成(默认比例1:2),年轻代由eden区和幸存者区(to和from)组成,比例8:1:1)

5.方法区(作用:存储类的信息和运行时常量池,线程共享区,虚拟机启动是创建、关闭时释放;运行时常量池可以被看做是一张表,记录着要执行的类名、方法名、参数类型、字面量等,类被加载时他的信息会被放进运行时常量池,虚拟机指令会根据运行时常量池找到信息)

三、额外知识

1.直接内存(不属于jvm的内存结构,是操作系统的系统内存,用于数据缓冲,读写性能高,不过回收成本也高,不受jvm内存回收管理)


这是个学习过程知识积累,知识点比想象的更散,需要结合起来学习




【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月20日 0

暂无评论

推荐阅读