游戏电视苹果数码历史美丽
投稿投诉
美丽时装
彩妆资讯
历史明星
乐活安卓
数码常识
驾车健康
苹果问答
网络发型
电视车载
室内电影
游戏科学
音乐整形

简单地聊一下java类加载机制

  简单的聊一下java类加载机制
  所谓越是基础的东西越重要,当我们在工作中涉及一些更高级的工作时候,往往对我们的基础要求也就更高。
  而且有些面试官也会问道这个问题,如果回答不上面试官心理如下
  什么是类加载
  类的加载指的是将类的。class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java。lang。Class对象,用来封装类在方法区内的数据结构。类的加载的最终产品是位于堆区中的Class对象,Class对象封装了类在方法区内的数据结构,并且向Java程序员提供了访问方法区内的数据结构的接口。
  类加载器并不需要等到某个类被首次主动使用时再加载它,JVM规范允许类加载器在预料某个类将要被使用时就预先加载它,如果在预先加载的过程中遇到了。class文件缺失或存在错误,类加载器必须在程序首次主动使用该类时才报告错误(LinkageError错误)如果这个类一直没有被程序主动使用,那么类加载器就不会报告错误。
  加载。class文件的方式
  从本地系统中直接加载
  通过网络下载。class文件
  从zip,jar等归档文件中加载。class文件
  从专有数据库中提取。class文件
  将Java源文件动态编译为。class文件类加载的过程
  类的声明周期如下图
  类加载的过程包括了加载、验证、准备、解析、初始化五个阶段。在这五个阶段中,加载、验证、准备和初始化这四个阶段发生的顺序是确定的,而解析阶段则不一定,它在某些情况下可以在初始化阶段之后开始,这是为了支持Java语言的运行时绑定(也成为动态绑定或晚期绑定)。注意这里的几个阶段是按顺序开始,而不是按顺序进行或完成,因为这些阶段通常都是互相交叉地混合进行的,通常在一个阶段执行的过程中调用或激活另一个阶段加载:查找并加载类的二进制数据在加载阶段,虚拟机需要完成以下三件事情
  1、通过一个类的全限定名来获取其定义的二进制字节流。
  2、将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构。
  3、在Java堆中生成一个代表这个类的java。lang。Class对象,作为对方法区中这些数据的访问入口。
  加载阶段是可控性最强的阶段,因为开发人员既可以使用系统提供的类加载器来完成加载,也可以自定义自己的类加载器来完成加载。加载阶段完成后,虚拟机外部的二进制字节流就按照虚拟机所需的格式存储在方法区之中,而且在Java堆中也创建一个java。lang。Class类的对象,这样便可以通过该对象访问方法区中的这些数据。验证:验证是为了确保Class文件的字节流中包含的信息符合当前虚拟机的要求,并且不会危害虚拟机自身的安全。验证阶段大致会完成4个阶段的检验动作:
  文件格式验证:验证字节流是否符合Class文件格式的规范;
  元数据验证:对字节码描述的信息进行语义分析(注意:对比javac编译阶段的语义分析),以保证其描述的信息符合Java语言规范的要求;
  字节码验证:通过数据流和控制流分析,确定程序语义是合法的、符合逻辑的。
  符号引用验证:确保解析动作能正确执行。
  验证阶段是非常重要的,但不是必须的,它对程序运行期没有影响,如果所引用的类经过反复验证,那么可以考虑采用Xverifynone参数来关闭大部分的类验证措施,以缩短虚拟机类加载的时间。准备:为类的静态变量分配内存,并将其初始化为默认值准备阶段是正式为类变量分配内存并设置类变量初始值的阶段,这些内存都将在方法区中分配。对于该阶段有以下几点需要注意:
  1、这时候进行内存分配的仅包括类变量(static),而不包括实例变量,实例变量会在对象实例化时随着对象一块分配在Java堆中。
  2、这里所设置的初始值通常情况下是数据类型默认的零值(如0、0L、null、false等),而不是被在Java代码中被显式地赋予的值。
  这里要注意一点,比如
  publicstaticintx10;
  在准备阶段的时候赋值的初始值为0(int的默认值)而不是3解析:把类中的符号引用转换为直接引用
  解析阶段是虚拟机将常量池内的符号引用替换为直接引用的过程,解析动作主要针对类或接口、字段、类方法、接口方法、方法类型、方法句柄和调用点限定符7类符号引用进行。符号引用就是一组符号来描述目标,可以是任何字面量。直接引用就是直接指向目标的指针、相对偏移量或一个间接定位到目标的句柄。初始化:为类的静态变量赋予正确的初始值,JVM负责对类进行初始化,主要对类变量进行初始化。对类变量进行初始值设定有两种方式:
  1、声明类变量是指定初始值
  2、使用静态代码块为类变量指定初始值
  JVM初始化步骤:
  1、假如这个类还没有被加载和连接,则程序先加载并连接该类
  2、假如该类的直接父类还没有被初始化,则先初始化其直接父类
  3、假如类中有初始化语句,则系统依次执行这些初始化语句
  类初始化时机:只有当对类的主动使用的时候才会导致类的初始化,类的主动使用包括以下六种:
  1、创建类的实例,也就是new的方式
  2、访问某个类或接口的静态变量,或者对该静态变量赋值
  3、调用类的静态方法
  4、反射(如Class。forName(com。shengsiyuan。Test))
  5、初始化某个类的子类,则其父类也会被初始化
  6、Java虚拟机启动时被标明为启动类的类(JavaTest),直接使用java。exe命令来运行某个主类
  我们用一个图来简单地表示下大致的类加载过程
  双亲委派先来了解下类加载器publicclassClassLoaderTest{publicstaticvoidmain(String〔〕args){ClassLoaderloaderThread。currentThread()。getContextClassLoader();System。out。println(loader);System。out。println(loader。getParent());System。out。println(loader。getParent()。getParent());}}输出结果sun。misc。LauncherAppClassLoader64fef26asun。misc。LauncherExtClassLoader1ddd40f3nullBootstrapClassLoader:根类(或叫启动、引导类加载器)加载器。
  它负责加载Java的核心类(如String、System等)。它比较特殊,因为它是由原生C代码实现的,并不是java。lang。ClassLoader的子类ExtensionClassLoader:扩展类加载器。
  它负责加载JRE的扩展目录(JAVAHOMEjrelibext)中JAR包的类,我们可以通过把自己开发的类打包成JAR文件放入扩展目录来为Java扩展核心类以外的新功能。ApplicationClassLoader:系统类加载器。
  它负责在JVM启动时加载来自Java命令的classpath选项、java。class。path系统属性,或CLASSPATH环境变量所指定的JAR包和类路径。双亲委派
  全盘负责:当一个类加载器加载某个Class时,该Class所依赖和引用的其它Class也将由该类加载器负责载入,除非显式的使用另外一个类加载器来载入。
  双亲委派:当一个类加载器收到了类加载请求,它会把这个请求委派给父(parent)类加载器去完成,依次递归,因此所有的加载请求最终都被传送到顶层的启动类加载器中。只有在父类加载器无法加载该类时子类才尝试从自己类的路径中加载该类。(注意:类加载器中的父子关系并不是类继承上的父子关系,而是类加载器实例之间的关系。)
  缓存机制:缓存机制会保证所有加载过的Class都会被缓存,当程序中需要使用某个类时,类加载器先从缓冲区中搜寻该类,若搜寻不到将读取该类的二进制数据,并转换成Class对象存入缓冲区中。这就是为什么修改了Class后需重启JVM才能生效的原因。

潮玩公仔5499元开新大盲盒,联想小新将潮酷进行到底3月1日19点,联想小新POPMART泡泡玛特潮玩奇妙夜圆满举行。活动上联想小新公布了全新设计的小新标识(icon)和五款名为精神角落的全球限量款潮玩小新公仔,还联合泡泡玛特发……按摩椅选择的5个大致标准1,按摩效果没有达到好的按摩效果,那你买按摩椅干什么!纯粹图便宜,那就别花钱好了,买了不好都还会加重状况呢!这样更是得不偿失。2,皮料等级a。增强型超细纤维皮……让民用插座具有工业级的安全标准飞利浦防雷防漏电插座测评序言:作为世界上最大的电子品牌之一,飞利浦在电子产品方面的探索一直没有停下脚步。无论是家用电器还是医疗系统,甚至是消费电子,飞利浦均有涉足。排插在人们日常生活中占着举足轻……司藤颜福瑞喜欢司藤吗从这些细节当中就能看到真相目前,电视剧《司藤》正在热播当中,剧中颜福瑞是大家非常喜欢的一个角色,很多观众觉得颜福瑞和司藤在一起也是一个奇怪的CP,那么颜福瑞喜欢司藤么?从这些细节当中就能看到真相,一起来……补课从公开转入地下,双减政策为什么没有有效缓解家长焦虑?双减政策、中考及其他华说坊间流传,某知名教培机构转行卖羽绒服了。媒体求证其事,回应道,属实。公司已组建项目团队,面向成人市场做时尚的户外羽绒服云。又有报道说,刻下,……租住顶楼3年,谈谈顶楼房子的好处与坏处楼房,不同楼层,确实有不同的居住感受,其中争议比较大的是顶层,有人说顶层不错,视野开阔,比较安静,也有说顶层不接地气,更有的说顶层会漏水。那究竟顶层房子到底值不值得买,都有哪些……公元前年,以色列圣殿被毁。巴比伦的异梦和儒佛现萌芽公元前年对于中国来说,注定是不平凡的时代。民族首个思想家辈出的时代来临。以孔子为代表,以列国为特色的春秋时代。许多的人开始进行深入哲学的思考。与此同时,周王朝开始走向没落,动荡……丁大命什么时候播出,丁大命演员表丁大命说出来很多人不清楚,可丁大命电视剧是什么时候播出,很多网友就想去了解一下有关的故事,看丁大命提前宣传相关的海报和预告片,好让观众能熟悉大概要表演的事情,但有的网友就不清楚……电影如影随心什么时候上映如影随心主要讲述什么故事电影如影随心什么时候上映:如影随心主要讲述什么故事近日,电影《如影随心》发布同名电影主题歌《如影随心》,香港新生代乐坛新势力、东亚Amusic旗下歌手JC陈咏桐牵手唱作才……延续国民手机的销量神话,红米Note10系列1小时卖掉50万当年红米一代凭借799的超低定价消灭了一众山寨机,从此红米手机凭借低价和高性价比,收获了国民手机的称号。而对红米认可度最高的,毫无疑问就是红米Note系列了,不管在学校公司、地……大学生兼职送外卖6天,领工资的时候傻眼!一怒之下投诉美团专送俗话说,穷人的孩子早当家。现在很多农村家庭条件比较差的孩子,在上大学的时候就开始兼职,为的是赚一点学费和生活费,减轻家里的负担,当然了,也有些是为了提高自己的阅历,进行社会实践……甜了青梅配竹马女主是谁剧中卓依风苏念风是同一个人吗近日,网剧《甜了青梅配竹马》在网上的关注度非常高,其中女主角苏念风备受大家的关注,那么,在剧中卓依风和苏念风是同一个人吗?女主苏念风是谁扮演的呢?一起来看一下具体的情况。……
服务加V东风启辰启航新十年启辰星亮了。在经历近5个月的漫长期待后,今年4月正式上市的启辰星迎来了转机,刚过去的10月份,启辰星终端销量取得环比增长45。9的佳绩,并带动企业整体销量环比增长12。8……20世纪十大战争(二)无产阶级的曙光对苏干涉战争沙皇俄国在世界第一次大战中屡战屡败,给俄国民众带来了严重的战争负担。国内先后爆发了二月革命和十月革命,列宁几乎在全国范围内建立了苏维埃政权。1918年3……AI落地之年盘点百度AI,云智一体加速产业智能化文杨剑勇即将迎来2021年,进入十四五规划的开局之年,意味着开启新征程。此外,因规划建议中多次提到人工智能与产业升级,意味着产业智能化升级已成趋势。相信各界将会加大对新技……WiFi对工厂有多重要?无线网络悄然走俏随着70后、80后退守中坚,90后新生代蓝领已经蔚然成林,站在了制造业大军的先锋行列。人口红利渐渐消褪,用工荒挥之不去;经济放缓市场下行,择业难日益显现。对于广大工厂而言,如何……首购增购两相宜全新一代PoloPlus速评1hr汽车市场新消费群体结构发生新变化,增换购需求日趋增加。有统计数据显示,预测在2021年前后,增换购用户比例将超过首购人群。当首购、增购、换购的消费比例重新分配,产品定位也……全球云服务需求强劲,全球三大云巨头除了亚马逊还有谁?文杨剑勇在人工智能等技术驱动下,信息科技呈现飞速发展,继而进入一个万物智能时代。同时,云计算作为技术输出窗口,传统IT结构由此向云构架转变,特别是在过去一年中,因新冠大流……再遭驳回!泰国天丝对中国红牛的诉讼算盘又落空了自泰国天丝与中国红牛发生分歧以来,泰方似乎就没有消停过,一直以诉讼的形式向中国红牛方施压,希望借此拖住中国红牛。但就从发布的官方文件来看,牵绊两者的股东纠纷、商标权属等问题,却……小米边框摄像头亮相,无需像素折损,也可实现真全面屏从手机全面屏时代开始,为隐藏前摄实现真全面屏,我们已经经历了太多版本,像刘海屏、水滴屏、挖孔屏等等,而接下来8月份后,屏下摄像头手机也开始陆续发布,目前已知有,中兴Axon30……呼伦贝尔宋MAX购车优惠0。4万元,欢迎莅临赏鉴本周宋MAX最新报价:比亚迪益丰祥泰店截止到10月25日限时促销,最高优惠4。22,如此优惠的降幅,大家可千万不要错过,店铺地址:内蒙古自治区呼伦贝尔市鄂温克族自治旗巴彦托海镇……Switch玩什么球类游戏篇没惊喜没有改变,我已经听了三年又到了每月一度的〔Switch玩什么〕时间了,今天我们来看枪车球的最后一项球。相信很多小伙伴们在现实中也都喜欢着各类体育运动,就拿评测君自己来说,足球、篮球、网球、排球我……小白编程应该怎么入门?教你从一个helloworld学到3个小白编程应该怎么入门?首先在教材的选择上,直接找豆瓣,挑评分最高的书来看就好了,那些经典书籍真的很简单,很适合入门。其次是学习的过程,不在于你怎么看怎么听,而在于你有没有进行实……百度CTO王海峰获光华工程科技奖为中国工程科技界最高奖11月8日,第十三届光华工程科技奖揭晓仪式在北京举行。该奖项被誉为中国工程界最高奖项,旨在对我国工程科技及管理领域做出杰出贡献的科学家、工程师进行表彰。百度CTO王海峰因其在人……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网