大厂面试Java各知识点综合面试题JVM性能优化相关问题

VIP免费
2024-12-10 1 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文件的规范,如主次版本号是否在当前虚拟机范围内,常量池中的常量是否有不被支持的类型.•元数据验证:对字节码描述的信息进行语义分析,如这个类是否有父类,是...

展开>> 收起<<
大厂面试Java各知识点综合面试题JVM性能优化相关问题.pdf

共19页,预览4页

还剩页未读, 继续阅读

声明:本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。玖贝云文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知玖贝云文库,我们立即给予删除!
分类:计算机 价格:5.9玖币 属性:19 页 大小:505.84KB 格式:PDF 时间:2024-12-10

开通VIP享超值会员特权

  • 多端同步记录
  • 高速下载文档
  • 免费文档工具
  • 分享文档赚钱
  • 每日登录抽奖
  • 优质衍生服务
/ 19
客服
关注