jvm初步理解

jvm初步理解

1.jvm的位置

在这里插入图片描述

操作系统之上

2.jvm的体系结构
在这里插入图片描述 类加载器

负责class的加载,将class文件的字节码存入内存,并将这些内容转化成运行时方法区的数据结构,classloader只负责类的加载

在这里插入图片描述

.class文件由.java编译而来,存在本地磁盘
classLoader:加载本初始.class文件,得到真正的class类,就是模板
Car Class:当前类模板,存在方法区中
car1:实例对象,可以有多个,模板只有1个

类加载器的种类

根加载器:又c++编写,程序自带的类,如String,在Javahome/jre/lib/rt.jar中
扩展加载器:带javax的都是扩展包,在javahome/jre/lib/ext/*.jar
应用程序加载器:java.lang.classloaderd的子类,用户如果有需求可以自定义类加载器的加载方法

加载机制,根加载器->扩展加载器->应用程序加载器

类的双亲委派机制

当类加载器收到类加载请求时,不会立刻加载类,而是向父类加载器传递,如果父类还有父类。就继续向上传递,到最上的加载器,如果能加载就加载,不能加载再向下,父类无法加载,子类才会去尝试加载

类加载器的沙箱安全机制

沙箱内操作与本机无关,保证本机的安全性

Native

关键字,当有这个关键字时候,说明已经超过java使用范围,调用底层的c语言进行操作,会在本地方法栈登记,java刚出的时候,c和c++横行,想要发展得融合不同的编程语言

程序计数器

记录了方法之间的调用和执行情况,用于存储下一条指令地址;
每个线程都有一个私有程序计数器,就是一个指针,指向方法区的方法字节码,由执行引擎获取下一条指令,计数器的内存很小,几乎可以忽略不计

方法区

存储static,final,class模板,产量池

栈管运行,堆管储存
栈也叫栈内存,主管java程序的运行,是在线程创建时创建,它的生命周期是跟着线程的生命周期的,线程结束栈内存也跟着释放,不存在垃圾回收问题,是线程私有,存有8种基本类型,对象的引用变量,实例方法都是在函数的栈内存分配;
存储本地变量,栈操作,栈帧数据
运行原理,方法调用压入栈,执行完毕弹出栈

在这里插入图片描述

Eden区满了后,触发轻GC,未被清除的进入幸存区,幸存区满了后,触发重GC,幸存的进入养老区
永久存储区存放的JDK自带的class对象,interface源数据,这个区域不存在垃圾回收,虚拟机关闭自动释放

栈,堆,方法区的关系

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值