Java虚拟机加载类文件大全-精细版

java加载类文件精细版,请仔细看

Java技术提供三种确保安全机制

  1. 语言设计特性 (对数组的边界进行检查、类型转换检查、无指针算法)
  2. 安全的访问控制机制
  3. 代码签名

类加载器

先看一下虚拟机执行步骤

  1. 虚拟机有一个用于加载类文件的机制,不管是从磁盘上读取文件还是请求web上的资源,都使用该机制进行加载myProgram类文件的内容
  2. 如果myProgram类拥有另外一个类的域或者超类是另一个类,那么另一个类文件会被加载(此过程称之为解析)
  3. 然后虚拟机执行myProgram类中的main方法(此类是静态的无需创建类的实例)
  4. 如果main 方法或者main调用的方法要用到更多的类,那么接下来将会加载更多的类

类加载机制并不是使用单个加载器,至少拥有三个

  1. 引导类加载器:负责加载系统类(从rt.jar进行加载)
  2. 扩展类加载器:负责扩展器类加载用于从jre/lib/ext目录加载
  3. 系统类加载器:用于加载应用类 通过classpath执行加载

类加载器层次结构

类加载器存在父子关系 例如系统类加载器要加载java.util.ArrayList,首先要求扩展类进行加载,然后扩展类加载器要求引导类加载器进行加载。

类加载器层次结构

什么是类加载器倒置

类加载器倒置

上下文类加载器

每一个线程对应一个类加载器的引用,称之为上下文类加载器。 主线程的上下文类加载器是系统类加载器。 新线程创建的上下文类加载器被设置为创建该线程的上下文下载器 所以不做任何情况下新线程的类加载器默认是系统类加载器

thread.setContextClassLoader(loader) 设置新线程的上下文加载器

我的博客即将搬运同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=3slweh0ociucw

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏spring源码深度学习

linux环境更新默认python2.7为python3.X

一般的linux系统都会自带python环境,默认都是python2.7,但是python2.7已经不开源,不维护了,并且python3已经成为主流。学习pyt...

2802
来自专栏一枝花算不算浪漫

[Linux基础]Linux基础知识入门及常见命令.

3917
来自专栏北京马哥教育

Linux中find命令用法全汇总,看完就没有不会用的!

Linux 查找命令是Linux系统中最重要和最常用的命令之一。查找用于根据与参数匹配的文件指定的条件来搜索和查找文件和目录列表的命令。查找可以在各种条件下使用...

1884
来自专栏linux运维学习

linux学习第五十二篇: exportfs命令,NFS客户端问题,FTP介绍,使用vsftpd搭建ftp服务

exportfs命令 常用选项 -a 全部挂载或者全部卸载 -r 重新挂载 -u 卸载某一个目录 -v 显示共享目录 以下操作在服务端上 vim /et...

2048
来自专栏散尽浮华

通过Nethogs查看服务器网卡流量情况

在日常运维工作中,会碰到服务器带宽飙升致使网站异常情况。作为运维人员,我们要能非常清楚地了解到服务器网卡的流量情况,观察到网卡的流量是由哪些程序在占用着。 今天...

39910
来自专栏章鱼的慢慢技术路

Unity Package Manager Error的解决方案

3825
来自专栏编程语言

Python:VScode 设置Python不同版本运行环境

1.首先本地安装有不同的Python的版本,比如2.7和3.5.mac下一般默认自带2.7版本。  终端输入侧  python -V 则显示默认版本号。而p...

1192
来自专栏猿说1024

JDK 安装

1916
来自专栏前端大白专栏

关于roadhogrc 新版本问题

1375
来自专栏xcywt

《Linux命令行与shell脚本编程大全》第十五章 呈现数据

15.1 理解输入和输出 现在知道两种显示脚本输出的方法 1)在显示器屏幕上显示 2)将输出文件重定向到文件中 15.1.1 标准文件描述符 Linux系统将每...

2166

扫码关注云+社区