博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
深入分析java web技术内幕----读书笔记(三)
阅读量:7066 次
发布时间:2019-06-28

本文共 1411 字,大约阅读时间需要 4 分钟。

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/a724888/article/details/62421108


claasloader读书笔记

claasloader

1classloaderclass加载到jvm中。

2、父优先的等级加载,双亲委派模型。

 

3defineclass用于将字节流解析成Class对象,主要用于读取class文件,以及网络文件中的类等。defineclass不会解析类,只会在此对象实例化时才会resolve

defineclassfindclass常一起使用,findclassclassloader中的方法,覆盖后可以自定义加载规则。

4this.getclass.getclassloader.loadclass可以在运行时加载指定类到程序。(只能在本程序的类加载器中加载).加载后还没解析,实例化时才resolve

5classforname()可以加载类并解析。

例子:;

Class.forName("org.java.lang",true,getClass().getClassLoader());参数为 类名、是否初始化、所用类加载器

getsystemclass也可以在自定义类加载器中加载类

 

6

Classloader是抽象类

  1. Bootstrap ClassLoader/启动类加载器 

    主要负责jdk_home/lib目录下的核心api-Xbootclasspath选项指定的jar包装入工作。

  2. Extension ClassLoader/扩展类加载器 

    主要负责jdk_home/lib/ext目录下的jar包或-Djava.ext.dirs指定目录下的jar包装入工作。

  3. System ClassLoader/系统类加载器 

    主要负责java -classpath/-Djava.class.path所指的目录下的类与jar包装入工作。

  4. User Custom ClassLoader/用户自定义类加载器(java.lang.ClassLoader的子类

    在程序运行期间,通过java.lang.ClassLoader的子类动态加载class文件,体现java动态实时类装入特性。

     

    自定义的类加载器都继承自URLclassloader或其他子类。

    但这些类的父加载器都是appclassloader

    因为它们都调用getsystemclassloader作为父加载器,getsystemclassloader的返回值都是appclassloader

     

    7、加载一个类的过程

     

     

     

     

     

     

     

    8jvm表示一个类是否是同一个类有两个条件:

    1、完整类名是否一样

    2、加载该类的classloader是否是同一个类加载器的同一个实例

    (不仅要类相同,实例也要是同一个)。

     

    9、回收问题:classloader加载的类的字节码(就是。class)会被保存在jvm的永久代,它的对象无引用时也会被jvm回收,但如果大量动态加载类时,会造成永久带溢出。(因为永久代只在full gc时清理,若full gc不频繁,会造成永久代内存溢出)

     

    systemgc会触发垃圾回收,但不知道回收情况如何。

    一般情况下systemgc会触发full gc,会stop the worldfull gc一般回收老年代和永久代。

     

     

你可能感兴趣的文章
北京出台地方性法规保护非遗 境外组织可依规在京做调查
查看>>
全国信访局长会议:确保网上信访好用管用
查看>>
广东湛江破获特大走私香烟案 抓获涉案嫌疑人21名
查看>>
扔掉代码表!用RNN“破解”摩斯电码
查看>>
纯css制作圆角矩形
查看>>
一只菜鸡的半年技术博客之路
查看>>
世界杯千万级直播高稳定的挑战和实践
查看>>
UCloud基于OpenvSwitch卸载的高性能25G智能网卡实践
查看>>
javaScript的数据结构与算法(二)——链表
查看>>
Cointext无需联网秒转BCH,但也要理性看待不足
查看>>
写给 Android 开发的小程序布局指南,Flex 布局!
查看>>
ReactNative之AsyncStorage本地存储
查看>>
手把手教你撸一个 Webpack Loader
查看>>
冒泡和快速排序
查看>>
每天阅读一个 npm 模块(6)- pify
查看>>
MySQL索引
查看>>
HeyUI组件库12月更新日志:Clipboard复制剪切板,Avatar头像
查看>>
十大监控工具,值得一试
查看>>
ES6 -> Javascript的类与继承在Babel的实现
查看>>
走进mysql基础
查看>>