范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

深入理解Java类加载机制,再也不用死记硬背了

  谈谈"会"的三个层次
  在《说透分布式事务》中,我举例里说明了会与会的差别。对一门语言的学习,这里谈谈我理解的"会"的三个层次:
  第一层:了解这门语言的语法、写法,我把它叫做 hello world 级别;
  第二层:了解这门语言的优劣势以及它的生态,了解这门语言的能力范围,我把它叫做 应用 级别;
  第三层:了解这门语言的底层运行机制,这有利于对程序进行调优,以及当程序遇到了比较罕见的问题时能够从根上分析解决它。我把它叫做 掌握 级别。
  在简历上写掌握某种语言的,一般面试官也会问一些很深入原理的问题,个人认为比较合理。自己作为一个15年一线Java开发,自认为有资格把掌握Java写在简历上。今天,我就来聊聊我对双亲委派机制一些理解。
  插个题外话,在《高并发下秒杀商品,你必须知道的9个细节》中,有朋友问配图是用什么画的。这里介绍一下自己的经验:
  1)思维导图还是processon更加方便:
  https://www.processon.com/i/594d313ae4b08b003f2ec84a
  2)流程图还是draw.io,这个不推荐在线编辑,慢到怀疑人生。安装版本也是免费的,官网可轻松下载。开头图的框图效果是draw.io的框图有个 Sketch 样式。这个样式很好看,但是不建议用于文献等正式场合。正式场合的图最好方方正正,不要太圆润,粗细均匀。
  3)生成曲线图、柱状图这些,还是习惯用excel。
  Java类加载机制
  首先我们需要思考一件事,我们编写的Java代码,是如何在各种各样的操作系统上运行起来的。
  Java文件通过Javac编译成class文件,这种中间码被称为字节码。然后由JVM加载字节码。这个过程就称为类加载。
  运行时,由解释器将字节码解释为一行行的机器码来执行。在程序运行期间,即时编译器会针对热点代码,将该部分字节码编译成机器码以获取更高的执行效率。在整个运行时,解释器和即时编译器相互配合,使程序几乎能达到和编译型语言几乎一样的执行速度。这个部分交给专业的编译器开发人员来做,咱们本篇不做深入讲解。
  到此上面那张图就讲完了,不要问我右上角那两个表情是怎么回事。就是发现编辑的时候竟然可以添加表情,觉得好玩就试试看。
  类的生命周期
  在详细讲解之前,我们明确一下类加载流程的目的。站在高处去看,就是把一份被javac编译过的文件通过加载,生成某种形式的class文件的数据结构送进内存。程序可以调用这个数据结构来构造出Java对象。这个过程是在运行时进行的,也是Java动态拓展性的根基。
  上面这张图表现了类的整个生命周期。而类加载呢,只包含了加载、链接和初始化三个阶段。加载只是类加载的第一个环节,两者要注意区分。解析部分是灵活的,它可以在初始化环节之前或者之后进行,实现后期绑定。类加载的其他环节的顺序是不可改变的。
  加载
  加载是一个读取class文件,将其转化为某种静态数据结构而存储在方法区内,并在堆中生成一个便于用户调用的Java对象的过程。
  这里值得注意的是,这个Java文件不一定是本地文件,泛指各种来源的二进制流,比如网络、数据库或者比如动态代理技术这样的即时生成的class文件。
  验证
  验证的步骤很多,上面的图画得不完全准确。对文件格式的校验其实是发生在加载阶段的。通过才能顺利加载。顺利加载并不代表JVM完全认可了这个类,还要进行语法和语义上的分析,保证这个类不会危害JVM,这是对元数据和字节码上的验证。在解析阶段,还会进行符号引用的验证。随着JVM版本的升高,验证过程也在被不断丰富。
  准备
  准备就是为静态变量赋初始值,注意这里的初始值是JVM默认初始值,是固定的,不是咱们写代码时的那个初始值。这里有个比较容易混淆的概念。
  Java内存规范定义了方法区这种抽象概念。主流的JVM实现如HotSpot在JDK8之前使用永久代这种在堆中开辟专门空间的实现方式,JDK8之后使用元空间这种直接内存取代。
  HotSpot的实现:类的元信息、常量池、静态变量等都存在在JDK8之前都存在在永久代这种方法区的具体实现中。JDK8之后,常量池、静态变量被从方法区移除,转移到了堆中。元信息这些依然保留在方法区,具体的存储方式改成了元空间。
  解析
  解析是将符号引用替换为直接引用。
  静态解析
  符号引用就是假如类A引用了类B,加载阶段是静态解析,这时候B还没有被放到JVM内存中,这时候A引用的只是代表B的符号,这是符号引用。
  直接引用就是类A在解析阶段发现自己引用了B,如果这个时候B还没被加载。就是直接触发B的类加载,之后B的符号引用会被替换成实际地址。这被称为直接引用。
  动态解析
  本文类的生命周期部分引出了后期绑定这个概念。后期绑定其实就是动态解析。如果代码使用了多态。B是一个抽象类或者接口,A就不能知道究竟要用哪个来替换,只能等到实际发生调动时在进行实际地址的替换。这就是为什么有的解析发生在初始化之后。
  总结
  类加载的过程今天就讲这些。咱们来回顾一下类加载的五个阶段。
  从JVM的角度看,加载的读取二进制流和初始化阶段,是开放了主导权给用户的。用户可以使用动态代理等手段选择是否这个阶段进行加载。还可以使用多态的手段选择是否在这个阶段进行初始化。而剩下的所有部分都是JVM内部完成的。
  此时你可以闭上眼睛回顾一下类加载的五个阶段,是不是不用死记硬背也能了然于胸了。
  来源:https://www.cnblogs.com/xiexj/p/15949745.html

米粉节最后一波优惠,送价值599元无线充电套装,雷军发福利了论手机的性价比那还得是看小米,毕竟是从性价比手机发家的,小米手机一直都凭借性价比来吸引到很多的客户。后来雷军为了回馈粉丝创办了米粉节,每年的这几天都会有更高性价比的手机推出,也是雷iPadPro2020与iPadPro2021购买者指南2021年4月,苹果更新了其广受欢迎的iPadPro阵容,推出了更快的M1芯片,LiquidRetinaXDR显示屏,Thunderbolt端口等,取代了2020年3月的先前型号。号称最强大深度学习笔电,雷蛇推出LambdaTensorbook笔记本电脑IT之家4月13日消息,深度学习公司Lambda与雷蛇合作,发布了新的LambdaTensorbook笔记本电脑,号称是世界上为深度学习设计的最强大的笔记本电脑,可以使用Linux蓝宇宙上线破百万,首个元宇宙营销空间带来超强体验蓝色光标旗下蓝宇宙营销空间自3月30日上线百度希壤以来,吸引超过110万用户前来围观体验!这是元宇宙时代新形态营销的一次突破,也是元宇宙营销空间的首个案例。相比双微一抖时代,元宇宙加码元宇宙Meta测试虚拟销售脸书母公司Meta近日表示,将在其虚拟现实社交平台HorizonWorlds中上线虚拟商品交易工具。据了解,HorizonWorlds是Meta构建元宇宙的一个重要组成部分。通过此一文读懂IOS,安卓和鸿蒙的关系说起目前主流的移动操作系统,大家一定脱口而出IOS,安卓和鸿蒙,他们都是什么关系呢?我们一起看一下在这里不得不提一下Unix,Unix诞生于1969年的ATT贝尔实验室,是一个闭源小米上新出行潮品,飞行员风格无感佩戴,米家太阳镜Pilota体验什么物品能够让你开车更安全,同时还能变身为潮酷达人,我想一定非太阳镜莫属。四月初小米发布新款太阳镜米家太阳镜Pilota,作为爱尝鲜的我自然不会错过。米家太阳镜Pilota的外观是毛孩子专属的扫地机,净毛吸尘都在行,浦瑞克N8Plus宠物净毛宝天气越来越暖和了,马上又到了猫狗脱毛的时候,在清理这种毛发的时候,手动清扫显然会费时费力,普通的扫地机也不是个可靠的工具,扫地机的滚刷滚轮很容易被毛发缠绕,最后卡在半路不能动弹,后都2022年了,20W还配得上iPad吗?绿联小口红充电器实测PK上个月的苹果春季发布会一结束,我就果断剁手了新款iPadAir5,毕竟作为苹果最具性价比的平板,能配备iPadPro同款的M1芯片还不加价,我个人觉得算得上真香系列了。唯一不满意的桌面的乐趣,就是在于不断升级我的书桌新设备分享作为一个手痒党不动不舒服斯基,我一大爱好就是捣鼓过家里书房的各种设备,在有限的投入里,让自己能更加舒服的搬砖和游戏娱乐。这里,我就来和大家分享一下,我最近添置的一些高性价比设备和我区块链中的节点是什么意思?众所周知,我的好朋友阿强,一个币圈奇才,对所有可以一夜暴富的项目都有着出奇的热忱的一个敢于试错的勇士,今天他又又又又给我推荐了一个项目美公链。号称全面涵盖吃喝玩乐购,链上可视化数据
在Python中使用Asyncio系统(34)Task和FutureTask和Future前面我们讨论了协程,以及如何在循环中运行它们才有用。现在我想简单谈谈Task和Futureapi。你将使用最多的是Task,因为你的大部分工作将涉及使用cre苹果iPhone15或将搭载3nm芯片三星GalaxyS22Ultra真机图曝光苹果iPhone15Pro将搭载3nm芯片M2ProMax或有40核CPU据MacRumors报道,苹果和台积电计划使用台积电5nm工艺的升级版制造第二代苹果硅芯片,该芯片将包含两跌破4800!苹果突然宣布,果粉们也没料到,iPhone12再迎降价声明原创不易,禁止搬运,违者必究!在10月20日的时候,各大手机厂商已经开始预热双十一,给部分机型一些让利,在消费者看来,这已经是极大的让利了。但是没想到的是,随着临近双十一,各大百年东芝终须一别东芝再见,海信你好东芝制造了亚洲第一台彩色电视50年前的1965年,当第一台电视从深谷工厂生产下线时标志着日本乃至是全亚洲终于可以制造出彩色电视,而这台电视背后的则是一个至今依然让人耳熟能详的名字东AirPods3与AirPodsPro买哪个性价比更高呢?3代值不值得买?hello,大家好,我是摄影师曹富贵今天主要是想和大家探讨关于Airpots3的几个问题第一个问题就是品控Airpots3有两个产地第一肯定是我们中国第二个就是越南那我们应该怎么区vivoX60tPro12256GB直降2000元,到手价低至3999元11月10日消息,vivoX60tPro开启新一轮降价促销叠加优惠券后,12256GB直降2000元,到手价低至3999元。该机搭载骁龙888处理器,后置5000万微云台双主摄和蔡马斯克出售10特斯拉会怎样Muchismadelatelyofunrealizedgainsbeingameansoftaxavoidance,soIproposeselling10ofmyTeslasto三天连投两家车企,宁德时代有何企图?作者东关大先生出品电动公会坚称不造车的宁德时代,最近将投资的触角伸向了整车企业。11月8日,哪吒汽车官方宣布与宁德时代签署战略协议,宁德时代将参与哪吒汽车D2轮融资,同时双方在技术任正非果然没预判错!孟晚舟重返华为第3天,白宫突然下黑手了近些年来,美国对于中国的打压是世界各国有目共睹的,其为了遏制中国的发展,可谓是无所不用其极,各种没有下限的行动接连上演,这种赤裸裸的霸权行径,真的让人无比的愤怒。在这样的一个时代,谁是轮胎一哥?当特斯拉的市值突破1万亿美元的时候,相当于四个丰田或者八个大众,抑或是所有上市的传统车企的市值加起来,可能都不如特斯拉市值高。一个属于新能源车的时代来临了。10月份,新能源车在中国华为5G手机现货供应,6400万四摄8GB128GB,好评率高达97你是不是经常听到这样的说法对于电子产品,买新不买旧。其实,这个观点是非常片面的。这需要配合具体的情况,并不能以偏概全。要知道,某些手机更新换代后,在综合体验方面可能还不如旧款机型,