JVM篇(三)

类加载器

类加载器:java运行环境的一部分,负责动态的将java类加载到虚拟机的运行空间。
在这里插入图片描述
类加载器的种类:
启动类加载器(根加载器):Bootstrap -JRE/lib/rt.jar
扩展类加载器:Extension -JRE/lib/ext
应用程序加载器:Applicztion

双亲委派机制

定义:所谓双亲委派机制是指,当一个类收到加载请求时,首先它不会自己去加载,而是把这个请求向上传递给父类的加载器,每一层都是如此,所以最后这个加载请求会被传到根加载器,只有当父类的加载器没有办法完成加载请求的时候,子类的加载器才会尝试加载。

沙箱安全机制

在学习这个机制之前我们需要了解一个东西 沙箱
沙箱:是限制java运行的环境。主要限制对系统资源的访问(比如:CPU、内存、文件系统、网络)。
沙箱机制:就是将java代码严格的限定在的JVM特定的范围运行,并且严格的控制对本地资源的访问,通过这种方式,有效的对代码进行隔离,从而阻止了对本地系统造成破坏。
java中的安全模型史
在java中将要执行的代码分为本地代码和远程代码,本地代码可信,可以访问所有的系统资源。远程代码不可信,在早期的java安全模式中对于未授信的远程代码的安全机制,依赖于沙箱安全。
JDK1.0 :严格的安全机制,严重的限制了程序的扩展,比如用户的远程代码需要访问本地资源就不行。
在这里插入图片描述
JDK1.1:增加了安全模式,用户指定的代码可以对本地资源进行访问。

JDK1.2再次改进,增加了代码签名。不管是本地代码还是远程代码,都会按照用户设定的安全策略设定的,由类加载器加载到JVM中权限不同的运行空间,来实现差异化的代码执行权限控制。
在这里插入图片描述
然后最新的安全模式引入域的概念,虚拟机吧所有的代码加载到不同的系统域和应用域,系统域负责与关键资源进行交互,应用域不负通过系统域部分代理对各种需要的资源访问。
在这里插入图片描述

Native 关键字

凡是带了Native关键字的,表明java的作用范围达不到了,需要调用底层的C语言库。
带了Native关键字的都会进入本地方法栈,调用本地方法接口JNI(JNI的租用:扩展java的使用,融合不同的编程语言为java所用)。

PC寄存器

pc寄存器:是一块很小的内存空间,每个线程启动时都会创建一个pc寄存器,保存当前正在执行JVM的指令地址。pc寄存器的内容总是指向下一条将要被执行的指令地址,这里的地址可以是一个本地指针,也可以是在这方法区中相对于该方法起始指令的偏移量。
为什么pc寄存器是私有的?
简而言之,方便各线程之间进行独立的计算,防止出现互相干扰的情况。
使用pc寄存器存储字节码指令地址有什么用?
首先我们要知道,宏观上多线程是并行的,但是实际上是不断地交替进行的。
回到问题,因为pc寄存器需要不断地切换各线程,但是一条一条的来容易造成CPU资源浪费,而且时间缓慢,但是pc寄存器它的内容总是指向下一个将要运行的指令地址,就相当于提前规划好你要做什么一样,这样一来可以极大地使用CPU资源,不会造成时间上的浪费。

方法区

方法区和堆一样,是所有线程共享的区域,所有定义的方法信息都保存在该区域。
静态变量、常量、类信息(构造方法、接口定义)运行时的常量池也存在方法区,但是实例变量存在堆内存中,和方法区无关。

栈:是一种满足先进后出,后进先出的数据结构。也叫栈内存,主管程序的运行。它的生命周期和线程同步,一旦线程结束,栈就释放。并且栈是私有的不存在垃圾回收问题。
栈存放的对象:8种基本类型、对象引用(对象本身是存放在堆里或常量池里)、实例方法。
栈运行的原理:栈中的数据是以栈帧的格式存在的,,遵循先进后出,后进先出的原则。在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小倪长头发啦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值