当前位置:网站首页>jvm:类加载子系统干什么的?由什么组成?需要记住哪些八股文?
jvm:类加载子系统干什么的?由什么组成?需要记住哪些八股文?
2022-07-26 12:39:00 【谷咕咕】
jvm:类加载子系统干什么的?由什么组成?需要记住哪些八股文?
最近刚工作,有点懈怠了,看抖音的时候,发现大家都在学jvm,正好咕咕也在这方面一直有想要学习的东西,就参考了一下别人,学习了b站尚硅谷康老师的视频,确实讲得挺细的。打算看一点记录一点。
最近看完了前面30多个视屏,主要是讲类加载子系统。
稍微了解一点jvm,会知道jvm主要包括类加载子系统,运行时数据区,和执行引擎。
三级目录

这里想说
类装载子系统作用:
从文件系统中,加载class文件,只负责加载,不管执行。
有人问:写的java文件怎么就变成class文件了?
答:通过javac命令
类装载子系统包括:
loading-linking-initializetion三步
loading
中需要知道有bootstrap-extension-application三种加载器
通过全类名,获取该类的二进制字节流=》方法区的数据结构在内存中生成类的class对象。linking
需要知道验证,准备,解析三步(感觉了解就行)init
javac自动收集类中的所有类变量的赋值动作Clinnit
1.加载器有哪些“?
类加载器(重要)
bootstrap 引导类加载器,用c或c++,用于装载,java,javax,sun包下的文件。
其他加载器(重要)
extension拓展类加载器,和application系统类加载器统称为其他加载器。
一般我们自己写的类就是用application加载的,而jre,lib,ext子目录下的一些文件就是用拓展类加载的。
我们可以通过下面的方式获取系统类加载器,。getParent获取他的上层。
ClassLoader.getSystemClassLoader()
2.用户也可以自定义类加载器-好处:
- 隔离加载类
- 修改类加载方式
- 扩展加载源
- 防止源码泄漏
方法:extends classloader 重写findclass
3.双亲委派机制(重要)
- 如果一个类加载器收到加载请求,并不会自己先加载,而是去把这个请求委托给父类加载器去执行。
- 如果被委托的父类加载器,存在父类加载器,自会进一步向上委托,最总点,顶层的启动类加载器,
- 如果父类可以完成加载就让父类加载,如果不能加载,则子类加载。

双亲委派的优势: - 避免类的重复加载
- 保护程序安全,防止核心api被随意篡改,(例如自定义String类)
4.沙箱安全机制
- 保护自己的引导类加载的代码,不背自定义代码破坏
- 类名和用的加载器也一样,能被定义为一个类(就是一个类的类名,和加载它的加载器一样,就是一个类)
- jvm会保护用户类加载器的一个引导信息,到方法区,用于后续引用
类的主动使用和别动使用 :是否别初始化。
所以加粗的地方还是可以看看,八股文有点映像总是好的。
边栏推荐
猜你喜欢

Analysis of Wireshark data package of network security B module of national vocational college skills competition Wireshark 0051.pcap

回溯——46. 全排列

Minesweeping games - easy to play addictive (C language version)

今日睡眠质量记录75分

Knowledge points of C language documents

被罚“带薪休假”一个月后,谷歌解雇了“爱”上 AI 的他

Overseas app push (Part 2): Channel Integration Guide for overseas manufacturers

1-6月中国ADAS供应商占比9% 又一家零部件巨头全面布局智驾新赛道

Today's sleep quality record 75 points

STM32驱动HC05蓝牙串口通信模块
随机推荐
V00 - do whatever you want when you are old
Paper reading MLPD: multi label pedestrian detector in multispectral domain (Internship Program of Hikvision Research Institute)
Kubernetes----Kubernetes常用插件简介
14.2 byte stream learning
Understand test.py in gaitset
Does anyone know where the retract of flinksql can be specified? Only api code settings can be seen in online materials
Detailed explanation of Legendre transformation and conjugate function
Data query of MySQL (aggregate function)
自定义浏览器默认右击菜单栏
回溯——131. 分割回文串
0 basic programming resources (collect first ~ read slowly ~)
手机上买股票,在哪里开户比较安全?
A super easy-to-use artifact apifox, throw swagger a few streets... (glory Collection Edition)
Examples of ThreadLocal usage scenarios under multithreading
.eslintrc.js configuration description
数字化时代,是什么“黄金宝藏”在推动百年药企发展?
Backtracking - question 51 Queen n -- a classic backtracking problem that must be overcome
一款超好用的神器Apifox,甩 Swagger 几条街...(荣耀典藏版)
V01 - XX, record a good life from the log
Minesweeping games - easy to play addictive (C language version)