jvm学习

一,JVM的位置

在这里插入图片描述

二,JVM的体系结构

在这里插入图片描述
在这里插入图片描述

三,类加载器

作用:加载Class文件~
在这里插入图片描述
类加载机制 : 虚拟机把描述 类 的数据从class文件 加载 到内存,并对数据进行校验,解析和初始化,最终形成可以被虚拟机直接使用的java 类 型。
在这里插入图片描述

类加载流程(三个阶段):
1.加载阶段
将编译好的class文件加载到内存中(方法区),然后会生成一个代表这个类的Class对象。
2.链接阶段
会为静态变量分配内存并设置默认值。
3.初始化阶段
执行类构造器()进行初始化赋值。

在这里插入图片描述
java自带的类加载器:
1.虚拟机自带的加载器
2.启动类(根)加载器
启动类加载器(Bootstrap ClassLoader):又名根类加载器或引导类加载器,负责加载%JAVA_HOME%\bin目录下的所有jar包,或者是-Xbootclasspath参数指定的路径,例:rt.jar
3.扩展类加载器
拓展类加载器(Extension ClassLoader):负责加载%JAVA_HOME%\bin\ext目录下的所有jar包,或者是java.ext.dirs参数指定的路径
在这里插入图片描述
4.应用程序加载器
系统类加载器(Application ClassLoader):又名应用类加载器,负责加载用户类路径上所指定的类库,如果应用程序中没有自定义加载器,那么次加载器就为默认加载器

四,双亲委派机制:安全

在Java的类加载机制中,默认的就是双亲委派机制,这种委派机制就是将类加载器进行优先级分层,在触发类加载的时候,当前类加载器会从低级层层往上委托父类加载器去加载,每层类加载器在加载时会判断是否已经加载过,如果加载过就不在重复加载,这样设计能够避免类重复加载、核心类被篡改等情况发生。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

五,Java历史-沙箱安全机制

Java安全模型的核心就是Java沙箱(sandbox) ,
 什么是沙箱?沙箱是一个限制程序运行的环境。沙箱机制就是将Java代码限定在虚拟机(JVM)特定的运行范围中,并且严格限制代码对本地系统资源访问,通过这样的措施来保证对代码的有效隔离,防止对本地系统造成破坏。
沙箱主要限制系统资源访问,那系统资源包括什么? CPU、内存、文件系统、网络。不同级别的沙箱对这些资源访问的限制也可以不一样。
 所有的Java程序运行都可以指定沙箱,可以定制安全策略。
 在Java中将执行程序分成本地代码和远程代码两种,本地代码默认视为可信任的,而远程代码则被看作是不受信的。对于授信的本地代码,可以访问一切本地资源。而对于非授信的远程代码在早期的Java实现中,安全依赖于沙箱Sandbox)机制。如下图所示JDK1.0安全模型
在这里插入图片描述
但如此严格的安全机制也给程序的功能扩展带来障碍,比如当用户希望远程代码访问本地系统的文件时候,就无法实现。因此在后续的Java1.1版本中,针对安全机制做了改进,增加了安全策略,允许用户指定代码对本地资源的访问权限。如下图所示JDK1.1安全模型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值