栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

jvm:类加载子系统干什么的?由什么组成?需要记住哪些八股文?

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

jvm:类加载子系统干什么的?由什么组成?需要记住哪些八股文?

jvm:类加载子系统干什么的?由什么组成?需要记住哪些八股文?

最近刚工作,有点懈怠了,看抖音的时候,发现大家都在学jvm,正好咕咕也在这方面一直有想要学习的东西,就参考了一下别人,学习了b站尚硅谷康老师的视频,确实讲得挺细的。打算看一点记录一点。
最近看完了前面30多个视屏,主要是讲类加载子系统。
稍微了解一点jvm,会知道jvm主要包括类加载子系统,运行时数据区,和执行引擎。

这里写目录标题
  • jvm:类加载子系统干什么的?由什么组成?需要记住哪些八股文?
      • 三级目录
      • 类装载子系统作用:
        • 1.加载器有哪些“?
        • 2.用户也可以自定义类加载器-好处:
        • 3.双亲委派机制(重要)
        • 4.沙箱安全机制

三级目录


这里想说

类装载子系统作用:

从文件系统中,加载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会保护用户类加载器的一个引导信息,到方法区,用于后续引用

类的主动使用和别动使用 :是否别初始化。

所以加粗的地方还是可以看看,八股文有点映像总是好的。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1027693.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号