Android面试题——JVM
创始人
2024-05-29 00:50:26
0

Android平台的虚拟机是基于栈的吗?

在这里插入图片描述
在这里插入图片描述

JVM运行时数据区

在这里插入图片描述

运行时栈

在这里插入图片描述

基于栈的虚拟机

在这里插入图片描述
在这里插入图片描述
第0行表示将一个Int型的1推送至操作数栈栈顶,程序计数器指向第0行。第一行字节码表示将栈顶的int型数值存入第一个本地变量,这两行代码就进行了给局部变量赋值的操作,第二三行同理。第4、5行表示将局部变量表的数入栈,第六行表示将栈顶两int型数值相加并将结果压入栈顶。第七行表示将单字节常量(-128~127)9推送至栈顶,因为这个字节占用两个字节码单元,所以下一行的行号是 9。9表示将栈顶两个数相乘并放入栈顶,第a行表示将栈顶的数存入本地变量。从这些操作我们可以看出都是操作操作数栈的。

Dalvik虚拟寄存器

JVM基于栈则意味着需要去栈中读写数据,所需的指令会更多,这样会导致速度变慢,对于性能有限的移动设备,显然不是很适合的。DVM是基于寄存器的,它没有基于栈的虚拟机在复制数据时而使用的大量的出入栈指令,同时指令更紧凑、更简洁。但是由于显式指定了操作数,所以基于寄存器的指令会比基于栈的指令要大,但是由于指令数量的减少,总的代码数不会增加多少.
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

各自特点

在这里插入图片描述

如何看待基于栈的虚拟机?

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

如何看待基于寄存器的虚拟机

在这里插入图片描述

为什么dex文件比class文件更适合移动端

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

class文件结构

在这里插入图片描述
在这里插入图片描述
· u1:1字节,无符号类型。
· u2:2字节,无符号类型。
· u4:4字节,无符号类型。
· u8:8字节,无符号类型。

文件头

在这里插入图片描述

常量池

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

类信息

在这里插入图片描述

字段表

在这里插入图片描述

方法表

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

属性信息

在这里插入图片描述

dex文件

在这里插入图片描述

class文件 vs dex文件

在Java SE程序中,Java类被编译成一个或多个.class文件,并打包成jar文件,而后JVM 会通过相应的.class 文件和jar 文件获取相应的字节码。执行顺序为.java 文件→.class文件→.jar文件,而DVM会用dx工具将所有的.class文件转换为一个.dex文件,然后DVM会从该.dex文件读取指令和数据。执行顺序为.java文件→.class文件→.dex文件。
jar文件里面包含多个.class文件,每个.class文件里面包含了该类的常量池、类信息、属性等。当JVM加载该.jar文件的时候,会加载里面的所有的.class文件,JVM的这种加载方式很慢,对于内存有限的移动设备并不合适。而在.apk文件中只包含了一个.dex文件,这个.dex文件将所有的.class里面所包含的信息全部整合在一起了,这样再加载就加快了速度。.class文件存在很多的冗余信息,dex工具会去除冗余信息,并把所有的.class文件整合到.dex文件中,减少了I/O操作,加快了类的查找速度。
在这里插入图片描述
在这里插入图片描述

索引区

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

你能不能自己写一个叫做java.lang.Object的类?

在这里插入图片描述
在这里插入图片描述

字节码加载

在这里插入图片描述

方法区

在这里插入图片描述

方法区实现

在这里插入图片描述

Java程序的双亲委派模型

在这里插入图片描述

Android程序的双亲委派模型

在这里插入图片描述
在这里插入图片描述

ClassLoader源码

在这里插入图片描述
在这里插入图片描述

加载自己写的Object类

在这里插入图片描述

双亲委派模型的好处

在这里插入图片描述

为什么要打破双亲委派模型

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

所有被new出来的实例,都是放在堆中的吗?

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

GC为什么会导致应用程序卡顿?

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

分代回收

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

垃圾检测算法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

垃圾回收算法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Android平台虚拟机中的CG又是怎样的?

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

双重检测的单例,为什么还要加volatile关键字?

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

相关内容

热门资讯

深交所参与建设的香港综合基金平... 7月3日,由香港交易及结算所有限公司(以下简称港交所)牵头、深圳证券交易所(以下简称深交所)下属深圳...
【工业硅】盘面涨跌反复,市场情...  在经历了昨日期货行情大幅上行后,今日工业硅期货行情转弱运行,盘面价格稍有松动!7月3日,截止15:...
四预警齐发!我国多地高温 四川... 01高温黄色预警中央气象台7月3日18时继续发布高温黄色预警:预计7月4日白天,华北南部、黄淮、江淮...
吉宏股份(02603)截至6月... 吉宏股份(02603)发布公告,截至2025年6月30日,公司通过回购专用证券账户以集中竞价交易方式...
夏天白手臂的秘密武器是…… 转自:扬子晚报扬子晚报网7月3日讯(记者 薄云峰)这两天,江苏多地持续高温,户外阳光刺眼,紫外线特别...
甘肃天水一幼儿园部分幼儿血铅异... 记者3日从甘肃省天水市获悉,1日,天水市麦积区市场监督管理局等部门接群众反映后,查获一起某幼儿园违规...
安诺其(300067.SZ):... 格隆汇7月3日丨安诺其(300067.SZ)公布,控股股东、实际控制人纪立军先生的一致行动人张烈寅女...
长虹美菱拟斥1.5亿至3亿元回... 2025年7月4日,长虹美菱发布回购股份报告书,公司将使用自有资金和自筹资金,通过集中竞价交易方式回...
东方卫视直击:日本参议院选举拉... 日本国会参议院选举7月3日发布公告,为期17天的竞选活动就此拉开序幕。这是石破内阁成立以来的首次参议...