写点什么

Java 虚拟机相关面试题 (1),整理出 Android 逆向系列学习进阶视频

用户头像
Android架构
关注
发布于: 19 小时前

2: iconst_2 将 int 型 2 入操作数栈


3: istore_2 将操作数栈中栈顶 int 型数值出栈,存入局部变量表(下标为 2 的位置)


4: iload_1 将局部变量表中下标为 1 的 int 型数据入栈


5: iload_2 将局部变量表中下标为 2 的 int 型数据入栈


6: iadd 1)将栈顶两 int 型数值出栈 ?2)相加 ?3)将结果压入操作数栈


7: bipush 10 10 的值扩展成 int 值入操作数栈


9: imul 1)将栈顶两 int 型数值出栈 ?2)相乘 ?3)将结果压入操作数栈


10: istore_3 将操作数栈顶 int 型数值出栈,存入局部变量表(下标为 3 的位置)


11: iload_3 将局部变量表中下标为 3 的 int 型数据入栈


12: ireturn 将操作数栈栈顶 int 型数值出栈,从当前方法返回 int。


相关内容见 17-01-43:24 至 53:36。?


动态连接(17-01-57:00):跟 Java 语言多态性有关(需要运行时才能确定具体的方法)。


返回地址(也叫完成出口 17-01-01:00:00):一个方法完成后,接下来需要执行什么就由这个完成出口决定。正常返回的话,会调用程序计数器中的地址作为返回;异常的话,通过异常处理器表(非栈帧中的)来确定。


本地方法栈(17-02-开始):跟虚拟机栈类似,虚拟机栈用于管理 java 函数的调用,而本地方法栈用于管理本地方法(native 方法,由 C 语言实现)的调用。


当一个 JVM 创建的线程调用 native 方法后,JVM 不再为其在虚拟机栈中创建栈帧,JVM 只是简单地动态链接并直接调用 native 方法。


虚拟机规范并无强制规定,各版本虚拟机自由实现本地方法栈。HotSpot 直接把本地方法栈和虚拟机栈合二为一。


线程共享(17-02-06:00):


小问题:线程共享为什么要分为方法区和堆,为什么不直接用一块区域?


堆:对象、数组。需要被频繁回收的。


方法区:类信息、常量、静态变量、即时编译期编译后的代码。这些信息被回收的难度是很大的。分为堆和方法区体现了动静结合的思想。即偏静态的数据放在方法区,需要频繁地动态创建和回收的数据放在堆中。


方法区:主要是用来存放已被虚拟机加载的类相关信息,包括类信息、静态变量、常量、运行时常量池、字符串常量池。


:对象实例(几乎所有)、数组。分为新生代和老年代。新生代又分为:Eden 空间、From Survivor 空间、To Survivor 空间,空间大小比例为 8:1:1。


1.2、我在 new 一个对象的时候,它是被放在内存的那一块区域




成员变量和局部变量。


Java 中几乎所有的对象实例、数组都会被放在堆中。


堆又分为老年代和新生代。新生代又分为:Eden 空间、From Survivor 空间、To Survivor 空间,空间大小比例为 8:1:1。


所以成员变量也会被放在堆中。


而局部变量会被放在虚拟机栈? -->?


《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
浏览器打开:qq.cn.hn/FTe 免费领取
复制代码


栈帧的局部变量表中。


局部变量表:用于存放局部变量。主要存储 8 大基础数据类型。如果是局部的一些对象,例如 Object 对象,我们只需要存放它的一个引用地址即可。


从垃圾回收方面来讲,局部变量在方法执行结束后就会立即被回收。而成员变量的回收则会根据 GC 的一套机制来决定是否进行回收。


2、Java 内存模型(JMM)


===============


2.1、讲一下 Java 内存模型




[JAVA 内存模型(JMM)和 JAVA 虚拟机内存模型(JVM)](


)


Java 内存模型即 Java Memory Model,简称 JMM。JMM 定义了 Java 虚拟机(JVM)在计算机内存(RAM)中的工作方式。程序中的变量存储在主内存中,每个线程拥有自己的工作内存并存放变量的拷贝,线程读写自己的工作内存,通过主内存进行变量的交互。JMM 就是规定了工作内存和主内存之间变量访问的细节,通过保障原子性、有序性、可见性来实现线程的有效协同和数据的安全。


JMM 屏蔽了不同操作系统差异,是跨平台可用的内存模型,用来描述线程的数据在何时从主内存读取,何时写入主内存,解决线程间数据共享和传递的问题。


3、垃圾回收


======


3.1、垃圾回收机制(Garbage Collection,GC)




用户头像

Android架构

关注

还未添加个人签名 2021.10.31 加入

还未添加个人简介

评论

发布
暂无评论
Java虚拟机相关面试题(1),整理出Android逆向系列学习进阶视频