zoukankan      html  css  js  c++  java
  • 类加载器的双亲委派原则

    一、描述类的装载过程和各个步骤的主要工作

    1、加载:使用类的全限定名(包名与类名)从磁盘搜索路径加载此类的二进制字节流(.class文件)

    2、链接:验证-准备-解析

    (1)验证:验证被加载后的类是否有正确的结构,类数据是否会符合虚拟机的要求,确保不会危害虚拟机安全。

    (2)准备:为类的静态变量(static filed)在方法区分配内存,并赋默认初值

    (3)解析:将类的二进制数据中的符号引用换为直接引用(老师上课的例子:在16进制显示的.class字节码文件中可以看到常量池里的#XX所对应的指针引用关系)。

    二、简述类加载器的双亲委派原则即双亲委派原则的意义

    原则:某个特定的类加载器在接到加载类的请求时,首先将加载任务委托给父类加载器,依次递归,如果父类加载器可以完成类加载任务,就成功返回;只有父类加载器无法完成此加载任务时,才自己去加载。

     

    意义:

    (1)避免类的重复加载

    (2)保护程序安全,防止核心的JAVA语言环境遭受破坏(老师上课举的例子:自己定义的String类根本没机会记载,BootstrapClassloader会直接加载JAVA的核心类)

    Mark-Compact:“标记-整理”(Mark-Compact)算法,标记过程仍然与“标记-清除”算法一样,但后续步骤不是直接对可回收对象进行清理,而是让所有存活的对象都向一端移动,然后直接清理掉端边界以外的内存

    优点:1、避免标记扫描的碎片问题。2、避免停止复制的空间问题。

    缺点:占用计算机资源,效率低

    Mark-Sweep

    优点:1、第一个实现并发垃圾收集的垃圾处理器。2、最短的STW停顿时间,发挥多核CPU并发运行为设计原则。

    缺点:1、效率问题,标记和清除两个过程的效率都不高。2、空间问题,标记清除之后会产生大量不连续的内存碎片,空间碎片太多。

    Copy算法

    优点:1、适用于“朝生夕死”的区域,如新生的Eden区。2、没有标记和清除过程,实现简单,运行高效。3、复制过去以后保证空间的连续性,不会出现"碎片"问题。

    缺点:需要两倍的内存空间。

    不积跬步,无以至千里;不积小流,无以成江海。
  • 相关阅读:
    【转】关于LWF——线性工作流
    【转】对抗拖库 ―― Web 前端慢加密
    【转】用C#调用Windows API向指定窗口发送
    使用 Redis 如何设计分布式锁?
    SpringBoot如何使用WebSocket实现前后端交互?
    Redis缓存使用中的热key问题
    Spring的BeanUtils的copyProperties方法需要注意的点
    解决github中图片不显示的问题
    java中JsonSerializer的用法(前后端单位转换必备)
    Spring Boot2.X中findOne的用法
  • 原文地址:https://www.cnblogs.com/CCTVCHCH/p/14730780.html
Copyright © 2011-2022 走看看