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

面试官Java从编译到执行,发生了什么

  面试官:今天从基础先问起吧,你是怎么理解Java是一门「跨平台」的语言,也就是「一次编译,到处运行的」?
  候选者:很好理解啊,因为我们有JVM。
  候选者:Java源代码会被编译为class文件,class文件是运行在JVM之上的。
  候选者:当我们日常开发安装JDK的时候,可以发现JDK是分「不同的操作系统」,JDK里是包含JVM的,所以Java依赖着JVM实现了『跨平台』
  候选者:JVM是面向操作系统的,它负责把Class字节码解释成系统所能识别的指令并执行,同时也负责程序运行时内存的管理。
  面试官:那要不你来聊聊从源码文件(.java)到代码执行的过程呗?
  候选者:嗯,没问题的
  候选者:简单总结的话,我认为就4个步骤:编译->加载->解释->执行
  候选者:编译:将源码文件编译成JVM可以解释的class文件。
  候选者:编译过程会对源代码程序做 「语法分析」「语义分析」「注解处理」等等处理,最后才生成字节码文件。
  候选者:比如对泛型的擦除和我们经常用的Lombok就是在编译阶段干的。
  候选者:加载:将编译后的class文件加载到JVM中。
  候选者:在加载阶段又可以细化几个步骤:装载->连接->初始化
  候选者:下面我对这些步骤又细说下哈。
  候选者:【装载时机】为了节省内存的开销,并不会一次性把所有的类都装载至JVM,而是等到「有需要」的时候才进行装载(比如new和反射等等)
  候选者:【装载发生】class文件是通过「类加载器」装载到jvm中的,为了防止内存中出现多份同样的字节码,使用了双亲委派机制(它不会自己去尝试加载这个类,而是把请求委托给父加载器去完成,依次向上)
  候选者:【装载规则】JDK 中的本地方法类一般由根加载器(Bootstrp loader)装载,JDK 中内部实现的扩展类一般由扩展加载器(ExtClassLoader )实现装载,而程序中的类文件则由系统加载器(AppClassLoader )实现装载。
  候选者:装载这个阶段它做的事情可以总结为:查找并加载类的二进制数据,在JVM「堆」中创建一个java.lang.Class类的对象,并将类相关的信息存储在JVM「方法区」中
  面试官:嗯…
  候选者:通过「装载」这个步骤后,现在已经把class文件装载到JVM中了,并创建出对应的Class对象以及类信息存储至方法区了。
  候选者:「连接」这个阶段它做的事情可以总结为:对class的信息进行验证、为「类变量」分配内存空间并对其赋默认值。
  候选者:连接又可以细化为几个步骤:验证->准备->解析
  候选者:1. 验证:验证类是否符合 Java 规范和 JVM 规范
  候选者:2. 准备:为类的静态变量分配内存,初始化为系统的初始值
  候选者:3. 解析:将符号引用转为直接引用的过程
  面试官:嗯…
  候选者:通过「连接」这个步骤后,现在已经对class信息做校验并分配了内存空间和默认值了。
  候选者:接下来就是「初始化」阶段了,这个阶段可以总结为:为类的静态变量赋予正确的初始值。
  候选者:过程大概就是收集class的静态变量、静态代码块、静态方法至()方法,随后从上往下开始执行。
  候选者:如果「实例化对象」则会调用方法对实例变量进行初始化,并执行对应的构造方法内的代码。
  候选者:扯了这么多,现在其实才完成至(编译->加载->解释->执行)中的加载阶段,下面就来说下【解释阶段】做了什么
  候选者:初始化完成之后,当我们尝试执行一个类的方法时,会找到对应方法的字节码的信息,然后解释器会把字节码信息解释成系统能识别的指令码。
  候选者:「解释」这个阶段它做的事情可以总结为:把字节码转换为操作系统识别的指令
  候选者:在解释阶段会有两种方式把字节码信息解释成机器指令码,一个是字节码解释器、一个是即时编译器(JIT)。
  候选者:JVM会对「热点代码」做编译,非热点代码直接进行解释。当JVM发现某个方法或代码块的运行特别频繁的时候,就有可能把这部分代码认定为「热点代码」
  候选者:使用「热点探测」来检测是否为热点代码。「热点探测」一般有两种方式,计数器和抽样。HotSpot使用的是「计数器」的方式进行探测,为每个方法准备了两类计数器:方法调用计数器和回边计数器
  候选者:这两个计数器都有一个确定的阈值,当计数器超过阈值溢出了,就会触发JIT编译。
  候选者:即时编译器把热点方法的指令码保存起来,下次执行的时候就无需重复的进行解释,直接执行缓存的机器语言
  面试官:嗯…
  候选者:解释阶段结束后,最后就到了执行阶段。
  候选者:「执行」这个阶段它做的事情可以总结为:操作系统把解释器解析出来的指令码,调用系统的硬件执行最终的程序指令。
  候选者:上面就是我对从源码文件(.java)到代码执行的过程的理解了。
  面试官:嗯…我还想问下你刚才提到的双亲委派模型…
  候选者:下次一定!
  本文总结:Java跨平台因为有JVM屏蔽了底层操作系统Java源码到执行的过程,从JVM的角度看可以总结为四个步骤:编译->加载->解释->执行 「编译」经过 语法分析、语义分析、注解处理 最后才生成会class文件 「加载」又可以细分步骤为:装载->连接->初始化。装载则把class文件装载至JVM,连接则校验class信息、分配内存空间及赋默认值,初始化则为变量赋值为正确的初始值。连接里又可以细化为:验证、准备、解析 「解释」则是把字节码转换成操作系统可识别的执行指令,在JVM中会有字节码解释器和即时编译器。在解释时会对代码进行分析,查看是否为「热点代码」,如果为「热点代码」则触发JIT编译,下次执行时就无需重复进行解释,提高解释速度 「执行」调用系统的硬件执行最终的程序指令

阿里巴巴启动大规模回购背后有三大积极信号3月22日美股收盘后,阿里巴巴宣布将股份回购规模由150亿美元扩大至250亿美元,有效期2年(截至2024年3月)。这已经是过去三个季度以来,阿里巴巴第二次扩大回购规模。2020年拼多多,装不下去了作者张生来源鸣金网砍不动的最后一刀,终于砍到自己身上。无数人的怒吼,已经将拼多多淹没!一hr拼多多永远也砍不完的最后一刀,到底还差多少刀?对这个困扰无数人的究极问题,有人就是不信邪超级小桀回应拼多多6万人砍单失败超级小桀回应拼多多6万人砍单失败今日头条像这种就是为了获取流量和点击率,找的人少了没有提出来钱就是人少,人多的时候反而是还差几个人就能提现,这样既可以获取流量和点击率,而且还可以变科技部拟规定不得向境外提供我国人类遗传资源22日,科学技术部下发关于公开征求人类遗传资源管理条例实施细则(征求意见稿)意见的通知。根据实施细则,人类遗传资源材料是指含有人体基因组基因等遗传物质的器官组织细胞等遗传材料。实施编程小技巧阿拉伯数字转中文汉字的Java方法之前做财务相关的系统时,阿拉伯数字需要转换成中文汉字。当时知识储备不足。一直没有满意的方案。今天特意思考这个问题,写下此方法,到目前为止算是最满意的方案了。importjava。u3月22日晚A股新能源上市公司利好消息1捷强装备(300875)接待银河证券等多家机构调研。2天顺风能(002531)去年陆上行业公开招标超50GW加上不需要招标项目预计风电行业全年陆上装机5060GW。3东方电缆(6海螺水泥10亿成立光伏科技公司加码新能源布局双碳及电价市场化改革背景下,水泥行业龙头海螺水泥(600585)动作频频,持续加码新能源领域布局。持续加码新能源布局企查查APP显示,3月21日,凤阳海螺光伏科技有限公司成立,法定算法时代即将落幕?官媒正式发声,早该这样了时至今日,我国的互联网行业已经发展了二十多年,可以说已经完全进入我们的日常生活。比如网购,且不说成年人,就连老年人甚至是小孩都已经熟知,对于相关的APP使用自如。而年轻人对于互联网艾融软件入选首批国家特色化示范性软件学院合作企业多年研发投入占营收比重超10挖贝网3月22日,北交所金融科技第一股艾融软件(830799)入选教育部办公厅工业和信息化部办公厅首批特色化示范性软件学院合作企业。数据显示,公司持续多年研发投入占营收比重超过10中国5G用户达到3。84亿占比23。3中新社北京3月22日电(记者刘育英)据最新统计,截至2022年2月末,中国三家基础电信企业5G移动电话用户达3。84亿户,比上年末净增2905万户,占移动电话用户总数的23。3。中百公里油耗2。1L,零百加速6。7秒,适时四驱,体验奥迪A6LPHEV在乘用车市场,随着新能源汽车的渗透率越来越高,各品牌都加速了在这个领域的布局,豪华品牌BBA也不例外。奥迪A6LPHEV,作为奥迪旗下的插电式混合动力中大型轿车,产品实力如何呢?当
国民神车不香了?微型电动车市场增速承压欧拉黑猫白猫停单宏光MINIEV销售乏力连日来,上游新闻记者走访市场发现,曾一度成为各大车企眼中香饽饽的A00级微型电动车,正在逐步降温。就连曾超越特斯拉的国民神车宏光MINIEV过几天的苹果春季发布会最值得期待的不应是iPhone不出意外的话,3月份的某个周二(理论上是3月8日),苹果将会举行2022年的首场发布会,也就是我们通常所说的苹果春季发布会。与秋季发布会主要发布新一代旗舰iPhone不同,春季发布家用电器老是坏,不是这毛病就是那毛病,低收入怎么活?很多家电用久了就会出现这样或那样的问题,这很正常,即便是品牌产品也不例外。我就是为省钱,而又喜欢自己捣鼓捣鼓,因此也就经常自己先动手检查修理,实在无能力搞定,再出钱请专业人士来处理第四大运营商即将上线,移动联通电信迎来劲敌,你会转网吗?怕是先喜后忧,以前移动信号强用移动,现在费用上吃不消了。现在跑联通来了,用了一个月五十元上下,还不限速只玩头条所有视频不敢用,所有其它软件不敢开。如果每月都在50元上下就不改嫁了,儿子秋天上学,学校让买i7的电脑,学的是动漫制作专业,拯救者y7000p怎么样,值得买吗?先说结论联想拯救者y7000p值得大学新生买,但目前这个节点我更推荐12代酷睿版本,性能提升很多,外观设计也更有味儿!y7000p即使电竞本也是性能本联想的拯救者系列虽然定位是电竞印度公司是怎么把巴菲特按在地上摩擦的?视频已发布,为保护版权,发出视频文案。点击此处观看视频巴菲特的印度之殇印度今年可算是把巴菲特按在地上侮辱啊,光这个公司(paytm),就至少坑走人巴大爷130亿卢比(差不多10亿左三星Galaxy系列手机被曝安全漏洞,涉及上亿部设备鞭牛士3月1日消息,据IT之家报道,研究发现,三星已经出货的上亿部Android智能手机存在安全漏洞,攻击者可能利用漏洞从相关设备中获取敏感和加密信息。以色列特拉维夫大学(TelA有哪些被智能手机淘汰的电子产品,你还记得吗?好吧,说一下自己的看法吧!1手柄游戏机90年代,谁要是有一台这个手柄游戏机那是相当的不得了,俄罗斯方块坦克大战等等都是经典游戏。也是在手机出现后被淘汰的。2BB机(传呼机)90年代新华三2亿元中标中国广电5G核心网工程IT云资源池设备采购项目2022年1月29日,中国广播电视网络集团有限公司发布中国广电5G核心网工程IT云资源池设备采购项目招标公告,本项目采购预算总金额为不含税1。9亿元人民币,含税2。13亿元人民币。俄罗斯卢布贬值,电子产品价格暴涨30随着俄乌冲突的家具,近段时间,俄罗斯卢布兑美元和欧元的汇率开始大幅下跌。再加上西方国家开始限制电子产品出口俄罗斯。如今在俄罗斯的电商网站上,很多电子产品的价格正在快速飙升。据俄罗斯阿里巴巴2023届全球校招启动超150类岗位全量开放技术岗占比超602月28日,阿里巴巴正式启动2023届校园招聘,含技术非技术类共超过150类职位面向大学生群体开放。另据消息人士称,阿里巴巴此前一直暗藏的顶尖校招技术人才项目阿里星LAB也极可能会