首页 > 其他分享 >JVM 类加载机制

JVM 类加载机制

时间:2024-08-20 19:52:03浏览次数:18  
标签:类库 字节 代码 JVM 沙箱 机制 加载

类加载器

2.1.1 简介

分类

说明

启动类加载器

  1. 负责加载<JAVA_HOME>\lib目录中的核心类库,如resources.jar等;
  2. 负责加载被-Xbootclasspath参数所指定的路径中的,并且是虚拟机识别的类库;
  3. 这个加载器是C++编写的,随着JVM启动。

扩展类加载器

  1. 负责加载<JAVA_HOME>\lib\ext目录中的类库;
  2. 也可以加载用java.ext.dirs系统变量来指定路径目录中的类库。

系统类加载器

  1. 负责加载用户类路径classpath上所有的jar包和 .class 文件。

自定义类加载器

  1. 可以支持一些个性化的扩展功能。

2.2.2 双亲委派机制

【概述】

为了避免类的重复加载,确保一个类的全局唯一性,以及保护程序安全,防止核心API被随意篡改,JVM会采用双亲委派模型进行加载,双亲委派模型要求除了顶层的启动类加载器外,其余的类加载器都应当有自己的父类加载器。

【工作过程】

  1. 类加载器收到某个类的加载请求,他不会自己去加载这个类;
  2. 他会将这个请求向上委托给父类加载器去完成,每一个加载器均是如此,直到启动类加载器;
  3. 启动类加载器检查自己是否能够加载当前这个类,能加载就结束,否则会抛出异常并通知子加载器进行加载;
  4. 子加载器重复步骤3,如果均无法加载则报异常Class Not Found

【过程图解】

2.2.3 沙箱安全机制

【沙箱】

沙箱是一个限制程序运行的环境。

【沙箱机制】

沙箱机制就是将Java代码限定在JVM特定的运行范围中,并严格限制代码对本地系统资源的访问,以此来保证对代码的有效隔离、防止对本地系统造成破坏。不同级别的沙箱对本地系统资源的访问限制不同(CPU、内存、文件系统、网络)。

【沙箱的基本组件】

组件

说明

字节码校验器

确保字节码文件(.class文件)遵守Java语言规范,实现Java程序的内存保护

注:并非所有的字节码文件都会经过字节码校验,例如核心类的字节码文件

类加载器

  1. 防止恶意代码干涉善意代码;
  2. 守护了被信任的类库边界;
  3. 将代码归入不同的受保护域,限制了代码的权限。

存取控制器

控制核心API对操作系统的存取权限(控制策略可由用户设定)。

安全管理器

核心API和操作系统间的主要接口,实现权限控制,优先级高于存取控制器。

安全软件包

java.security下的类和扩展包下的类,允许用户为自己的应用增加新的安全特性。

标签:类库,字节,代码,JVM,沙箱,机制,加载
From: https://blog.csdn.net/m0_51607909/article/details/141333534

相关文章

  • JVM 内存区域
    一、JVM简介【概述】JVM是Java虚拟机(JavaVirtualMachine)的简称,是一种用于计算设备的规范,是一个虚构出来的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现的。我们学习使用的基本都是HotSpot虚拟机。【优点】优点说明实现跨平台运行让底层代码和运行环......
  • Java中stream流的filter机制理解
    一开始我并不理解,为什么filter接受一个实现了Predicate接口的对象后,就能通过重写的test方法来筛选元素,这个将筛选后的元素放到新的流中,我并不知道如何实现的。后来我发现ReferencePipeline抽象类中重写了filter方法,并且Collection中的stream方法返回的是StreamSupport.stream方法......
  • 深入理解Java虚拟机(类加载机制)
    文章收录在网站:http://hardyfish.top/文章收录在网站:http://hardyfish.top/文章收录在网站:http://hardyfish.top/文章收录在网站:http://hardyfish.top/类加载机制类加载机制的过程是什么呢?JVM把描述类的数据从Class文件中加载到内存中,并对其进行校验,解析,初始化......
  • STP(角色选举、状态、定时器、拓扑变更机制、PVST、PVST+增强特性)
    文章目录一、什么是STP定义特点工作原理专业术语二、STP角色选举1、配置命令:2、端口角色:三、STP的状态四、STP的定时器①HelloTime:2s②MaxAge:20s③ForwardDelay:15s④AgingTime:300s五、STP拓扑变化机制六、PVST七、PVST+增强特性......
  • Python 加载 TensorFlow 模型
    1.SavedModel和HDF5加载TensorFlow模型为了加载一个TensorFlow模型,我们首先需要明确模型的格式。TensorFlow支持多种模型格式,但最常见的两种是SavedModel和HDF5(对于Keras模型)。这里,我将分别给出加载这两种模型格式的示例代码。1.1加载SavedModel格式的TensorFlow模型SavedModel......
  • TCPIP路由技术第一卷第七章第二部分Eigrp的五种包以及RTP机制
    rtp也可以使用不可靠的发送,不需要确认,而且在使用不可靠发送的eigrp数据包中不包含序列号.eigrp协议使用多种类型的数据包,所有这些数据包都通过ip头部的协议号88来标识.hello(hello)-用于邻居发现和恢复进程,hello数据包使用组播方式发送.而且使用不可靠的发送方式.确认(ackn......
  • MYSQL排它锁获取机制
    在数据库系统中,排他锁(ExclusiveLock)用于确保在一个事务对数据进行修改时,其他事务无法访问或修改相同的数据。这种机制确保了数据的完整性和一致性。获取排他锁的方式包括自动获取和手动获取,下面我将详细整理这两种方式的机制。自动获取排他锁行级别的排他锁(自动)场景:当你执......
  • "DSE 驱动签名强制"(Driver Signature Enforcement)是一项 Windows 操作系统的安全功能,
    "DSE驱动签名强制"(DriverSignatureEnforcement)最早起源于WindowsXP和WindowsServer2003的安全增强功能。随着时间推移,它在后续的Windows版本中得到进一步加强和改进,旨在提升系统的安全性和稳定性,通过确保驱动程序必须经过签名认证,防止潜在恶意软件和不兼容的驱动程序......
  • 加载摄像头
    学OpenCV================================================简单的看下效果。当前我使用的4.10.0。这个版本需要参数2,否则在我的windows10上加载不了摄像头。================================================1#include<iostream>2#include<opencv2/opencv.hpp>3......
  • 加载显示视频
    学OpenCV================================================简单的看下效果。================================================1#include<iostream>2#include<opencv2/opencv.hpp>3#include<opencv2/core/utils/logger.hpp>45intmain()6......