大厂面试Java各知识点综合面试题JVM性能优化相关问题
VIP免费
2024-12-10
3
0
505.84KB
19 页
5.9玖币
侵权投诉
JVM 面试题
一.Java 类加载过程?
Java 类加载需要经历一下 7 个过程:
1. 加载
加载是类加载的第一个过程,在这个阶段,将完成一下三件事情:
• 通过一个类的全限定名获取该类的二进制流。
• 将该二进制流中的静态存储结构转化为方法去运行时数据结
构。
• 在内存中生成该类的 Class 对象,作为该类的数据访问入口。
2. 验证
验证的目的是为了确保 Class 文件的字节流中的信息不回危害到
虚拟机.在该阶段主要完成以下四钟验证:
• 文件格式验证:验证字节流是否符合 Class 文件的规范,如
主次版本号是否在当前虚拟机范围内,常量池中的常量是否
有不被支持的类型.
• 元数据验证:对字节码描述的信息进行语义分析,如这个类是
否有父类,是否集成了不被继承的类等。
• 字节码验证:是整个验证过程中最复杂的一个阶段,通过验
证数据流和控制流的分析,确定程序语义是否正确,主要针
对方法体的验证。如:方法中的类型转换是否正确,跳转指
令是否正确等。
• 符号引用验证:这个动作在后面的解析过程中发生,主要是
为了确保解析动作能正确执行。
3. 准备
准备阶段是为类的静态变量分配内存并将其初始化为默认值,这些
内存都将在方法区中进行分配。准备阶段不分配类中的实例变量的
内存,实例变量将会在对象实例化时随着对象一起分配在 Java 堆
中。
public static int value=123;//在准备阶段 value 初始值为 0 。在初
始化阶段才会变为 123 。
4. 解析
该阶段主要完成符号引用到直接引用的转换动作。解析动作并不一
定在初始化动作完成之前,也有可能在初始化之后。
5. 初始化
初始化时类加载的最后一步,前面的类加载过程,除了在加载阶段
用户应用程序可以通过自定义类加载器参与之外,其余动作完全由
虚拟机主导和控制。到了初始化阶段,才真正开始执行类中定义的
Java 程序代码。
6. 使用
7. 卸载
二.描述一下 JVM 加载 Class 文件的原理机制?
Java 语言是一种具有动态性的解释型语言,类(Class)只有被加
载到 JVM 后才能运行。当运行指定程序时,JVM 会将编译生成
的 .class 文件按照需求和一定的规则加载到内存中,并组织成为
一个完整的 Java 应用程序。这个加载过程是由类加载器完成,具
体来说,就是由 ClassLoader 和它的子类来实现的。类加载器本
身也是一个类,其实质是把类文件从硬盘读取到内存中。
类的加载方式分为隐式加载和显示加载。隐式加载指的是程序在使
用 new 等方式创建对象时,会隐式地调用类的加载器把对应的类
加载到 JVM 中。显示加载指的是通过直接调用 class.forName()
方法来把所需的类加载到 JVM 中。
任何一个工程项目都是由许多类组成的,当程序启动时,只把需要
的类加载到 JVM 中,其他类只有被使用到的时候才会被加载,采
用这种方法一方面可以加快加载速度,另一方面可以节约程序运行
时对内存的开销。此外,在 Java 语言中,每个类或接口都对应一
个 .class 文件,这些文件可以被看成是一个个可以被动态加载的
单元,因此当只有部分类被修改时,只需要重新编译变化的类即可,
而不需要重新编译所有文件,因此加快了编译速度。
在 Java 语言中,类的加载是动态的,它并不会一次性将所有类全
部加载后再运行,而是保证程序运行的基础类(例如基类)完全加
载到 JVM 中,至于其他类,则在需要的时候才加载。
类加载的主要步骤:
• 装载。根据查找路径找到相应的 class 文件,然后导入。
• 链接。链接又可分为 3 个小步:
• 检查,检查待加载的 class 文件的正确性。
• 准备,给类中的静态变量分配存储空间。
• 解析,将符号引用转换为直接引用(这一步可选)
• 初始化。对静态变量和静态代码块执行初始化工作。
三 Java 内存分配。
• 寄存器:我们无法控制。
• 静态域:static 定义的静态成员。
• 常量池:编译时被确定并保存在 .class 文件中的(final)常
量值和一些文本修饰的符号引用(类和接口的全限定名,字
段的名称和描述符,方法和名称和描述符)。
• 非 RAM 存储:硬盘等永久存储空间。
摘要:
展开>>
收起<<
JVM面试题一.Java类加载过程?Java类加载需要经历一下7个过程:1.加载加载是类加载的第一个过程,在这个阶段,将完成一下三件事情:•通过一个类的全限定名获取该类的二进制流。•将该二进制流中的静态存储结构转化为方法去运行时数据结构。•在内存中生成该类的Class对象,作为该类的数据访问入口。2.验证验证的目的是为了确保Class文件的字节流中的信息不回危害到虚拟机.在该阶段主要完成以下四钟验证:•文件格式验证:验证字节流是否符合Class文件的规范,如主次版本号是否在当前虚拟机范围内,常量池中的常量是否有不被支持的类型.•元数据验证:对字节码描述的信息进行语义分析,如这个类是否有父类,是...
声明:本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。玖贝云文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知玖贝云文库,我们立即给予删除!
相关推荐
-
工程建设招标投标合同(附件)VIP免费
2024-11-15 16 -
工程建设招标投标合同(动员预付款银行保证书)VIP免费
2024-11-15 11 -
工程建设招标设标合同条件(第1部分)VIP免费
2024-11-15 11 -
工程建设招标设标合同合同条件(第3部分)VIP免费
2024-11-15 10 -
工程建设招标设标合同合同条件(第2部分)VIP免费
2024-11-15 13 -
工程建设监理委托合同VIP免费
2024-11-15 14 -
工程建设监理合同标准条件VIP免费
2024-11-15 11 -
工程技术资料目录VIP免费
2024-11-15 13 -
工程技术咨询服务合同VIP免费
2024-11-15 13 -
工程建设招标投标合同(投标邀请书)VIP免费
2024-11-15 35
分类:计算机
价格:5.9玖币
属性:19 页
大小:505.84KB
格式:PDF
时间:2024-12-10


渝公网安备50010702506394