JVM学习笔记

JVM学习笔记

上周观看了圣思园张龙老师所讲的<深入了解JVM>课程,结合自己的理解对有关类加载器的内容(ClassLoader)做下总结.

    一: 什么是类加载器(ClassLoader)?

    java跨平台? -- Java源文件编译成了的.class文件(字节码文件)可以在JVM上运行,而JVM可以看成一个独立于各操作系统的平台,JVM会加载编译后的.class文件到内存,由JVM解析执行.

   类加载器,就是可以将编译后的.class文件加载到内存,由JVM进而编译执行的类.

   二: 类加载器的作用?

   1.将.class文件加载到JVM内存中.

   三: 类加载器的类别:

   1.根类加载器:

    ①:它没有父类加载器

    ②:它是由C和C++语言编写的, class.getClassLoader() == null

    ③:它从系统属性sun.boot.class.path所指定的目录中加载类库,不会继承ClassLoader这个类

  2.扩展类加载器

    ①:它的父类加载器是: 根类加载器

    ②:它是由Java语言实现的

    ③: 它从java.ext.dirs系统属性所指定的目录或者${JAVA_HOME}/jre/lib/ext/目录下加载类库,如果用户创建的jar文件放到这个目录下,也会由扩展类加载器进行加载

   3.系统类加载器

    ①:它的父类加载器是: 扩展类加载器

    ②:它是由Java语言实现的

    ③:它从环境变量classpath或者系统属性java.class.path所指定的目录中加载类,它是用户自定义类加载器的默认父类加载器.

   4.用户自定义类加载器.

    ①:它的默认父类加载器是:系统类加载器,当然我们也可以在创建的时候指定父类加载器

    ②:由Java语言实现的,要创建一个用户自定义类加载器,只需要extends ClassLoader这个类,并且Override掉它的findClass()方法就可以了

    ③:我们在创建自定义类加载器的器的时候可以指定从那些目录进行加载.class文件.

    ④:一个自定义类加载器的例子(略)


❤Java初高级学习分享,共同学习才是最明智的选择,喜欢的话可以我的学习群64弍46衣3凌9,或加资料群69似64陆0吧3(进群备注平台名)

    5:父类加载器的含义:

    所谓的父类加载器,并不和Java语言中的extends的含义一样,父子类加载器之间一种组合关系,如果理解成extends的话,那岂不是所有的用户自定义类加载器都是ClassLoader了吗?但这是不正确的.

    6:类加载器的父委托机制:(定义类加载器, 初始类加载器)

    JDK1.2版本开始,类加载机制采用了父委托机制,在此委托机制中,除了JVM自带的根类加载器以外,其它的类加载器都有且只有一个父类加载器.

     例如:假设有两个个自定义类加载器Loader1,Loader2, Loader1的父类加载器是系统类加载器,Loader2的父类加载器是Loader.当Loader2要去加载一个类时,它会首先委托给Loader1去加载,因为Loader1还有父类加载器扩展类加载器,这时它会向上委托给扩展类加载器;同理,扩展类加载器会继续会上委托,直至根类加载器.当根类加载器加载不了这个类时,它会交由它的子类加载器进行加载....直至Loader2这个类加载器.如果Loader2这个类加载器还加载不了,就会抛出ClassNotFoundException.

     假定:Loader1可以加载到目标.class文件,那么Loader1这个类加载器就被称为这个类的定义类加载器,而Loader和Loader2都被称为初始类加载器

    7:JVM对类的使用方式:

    主动使用:

    ①:创建一个类的实例: new Test();

    ②:访问某个类或者接口的静态方法,或者对该静态变量赋值Test.a或者Test.a=b

    ③:调用类的静态方法 Test.methodName();

    ④:反射使用(如:Class.forName(args);

    ⑤:初始化一个类的子类

    ⑥:Java虚拟机启动时被标明启动类的类(包含Main方法的类)

    被动使用:

    除了以上6种主动使用外,都被称为被动使用,被动使用不会导致类的初始化.

    8: JVM对类的加载,连接和初始化(静态变量)

     ①:加载: 查找并加载类的二进制数据.class文件,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构

     ②:连接:

       ⓐ验证:确保被加载的类的正确性,包括类文件的结构检查,语义检查,字节码验证,二进制兼容的验证

       ⓑ准备:为类的静态变量体现内存大小,并将其赋予默认值

       ⓒ解析:反类中的符号引用转换成直接引用(符号引用  car.run()

     ③:初始化

      静态变量声明处初始化和静态代码块中初始化.

      初始化步骤:

       先父类初始化,再子类初始化.

      当Java虚拟机初始化一个类时,要求它所有的父类都已经初始化了,但这条规则不适合于接口之间或者类和接口之间

      ⓐ:在初始化一个类时,并不会初始化它所实现的接口

      ⓑ:初始化一个接口时,并不会先初始化它的父接口,

      ⓒ:对子类的"主动使用"会导致父类的初始化,但对父类的"主动使用"不会导致子类的初始化.一个很简单的例子Object类

      ⓓ:通过子类访问父类中所定义的静态变量和方法不会引起子类的初始化

      ⓔ:父接口不会因为子接口或者其实现类的初始化而初始化,只有当程序首次访问定义在父接口的静态变量时,才会导致该接口的初始化.

    9:一个用户自定义类加载器的实现(在我的Java程序中)

    10:一些练习题.

    11:待补充:类的命名空间的相关知识.

❤提问/互动请留言,可直接在最底右下方"写留言即可"

❤Java初高级学习分享,共同学习才是最明智的选择,喜欢的话可以我的学习群64弍46衣3凌9,或加资料群69似64陆0吧3(进群备注平台名)

❤如果觉得写得不错请点击“订阅”,每天更新全新的内容!

❤你们的喜欢和关注就是我最大的动力支撑!!!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,793评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,567评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,342评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,825评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,814评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,680评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,033评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,687评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,175评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,668评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,775评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,419评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,020评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,206评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,092评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,510评论 2 343

推荐阅读更多精彩内容

  • 爱一个人便会默默地关注着他。 若眼神不小心落在他身上,那便无法将目光转移。 你正爱着他,你的心被他占满。 你会隐隐...
    鸿雁雁_6ce9阅读 336评论 0 0
  • 本书讲述的事伊兰特的,五个儿子拥有这上古武器的力量,每个人体内都有神寄居在里面,被称之为寄神者,也只有寄神者才能找...
    涩叙喵阅读 290评论 3 4
  • 第二周继续之前践行,本周主要策划安排黄老师的站桩分享!沟通黄老师,海报,征集小伙伴共同策划,需要一定时间!除了黄老...
    HeidiQ阅读 153评论 0 0
  • 是啊,我们都想要爱,毕竟这是个美妙的事情。可是当一个人内心有了爱的空洞,会怎么去填补。 对未来都要千般万般的期许,...
    挂着两只黑眼圈阅读 276评论 0 0