版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Java岗位面试,JVM是对程序员基本功考察,通常会问你对JVM了解吗?可以分几部分回答这个问题,首先JVM存划分 | JVM垃圾回收的含义 | 有哪些GC算法 以及年轻代和老年代各自特点等等。1) JVM存划分: 方法区 (线程共享) 常量 静态变量 JIT(即时编译器)编译后代码也在方法区存放 堆存(线程共享) 垃圾回收的主要场地 程序计数器 当前线程执行的字节码的位置指示器 Java虚拟机栈(栈存) :保存局部变量,基本数据类型以及堆存中对象的引用变量 本地方法栈 (C栈):为JVM提供使用native方法的服务通过这幅图了解一下JDK 1.8同JDK 1.7 最大的区别是:元数据取代了
2、永久代.元空间的本质和永久代类似,都是对JVM规中的方法区的实现.其元空间和永久代之间的最大区别在于:元数据空间不在虚拟机中,而是在本地存中详细了解一下各个部分01)程序计数器(PC寄存器)程序计数器的定义: 程序计数器是一块较小的存空间,是当前线程正在执行的哪一条字节码指令的地址,若当前线程正在执行的是一个本地方法,那么此时程序计数器为Undefined程序计数器的作用:程序计数器的特点02)Java虚拟机栈定义: 描述Java方法运行过程的存模型Java虚拟机栈会为每一个即将运行的Java方法创建一块叫做栈帧的区域,用于存放该方法运行过程中的一些信息,如 局部变量表 /操作数栈 /动态 /
3、方法出口信息 .压栈出栈过程:当方法运行过程中需要创建局部变量时,就将局部变量的值存入栈帧的局部变量表中Java虚拟机栈的栈顶是当前正在执行的活动栈,也就是当前正在执行的方法,PC寄存器也会指向这个地址,只有这个活动的栈帧的本地变量可以被操作数栈操作,当前这个栈帧中调用另一个方法,与之对应的额栈帧又会被创建,新创建的栈帧压入栈顶,变成当前的活动栈帧,方法结束后,当前栈帧的返回值变成新的活动栈帧的中的操作数栈的一个操作数,如果没有返回值,那么新的活动栈帧中操作数栈的操作数没有变化由于Java虚拟机栈是线程对应的,数据不是共享的,因此不用关心数据一致性问题,也不会存在同步锁的问题特点03)本地方法
4、栈(C栈)定义: 是为了JVM运行native方法准备的空间,由于很多native方法都是用C语言实现的,所以通常又叫C栈,它与Java虚拟机栈实现的功能类似,只不过本地方法栈描述本地方法运行过程的存模型栈帧变化过程:本地方法被执行时,在本地方法栈也会创建一块栈帧,用于存放该方法的局部变量表 /操作数栈 /动态 /方法出口等信息; 方法结束后,相应的栈帧也会出栈,并释放存空间.也会抛出StackOverFlowError和OutOfMemoryError异常04) 堆定义: 堆是用来对象的存空间,几乎所有的对象都存储在堆中特点:05)方法区定义: Java虚拟机规中定义方法区是堆的一个逻辑部分
5、,方法区存放以下信息 已被虚拟机加载的类信息 /常量 /静态变量 /即时编译后代码特点:运行时常量池:方法区中存放:类信息 常量 静态变量 即时编译器变编译后代码.常量就存放在运行时常量池中.当类被Java虚拟机加载后,.class文件中的常量就存在方法区的运行常量池,而且在运行期间,可以向常量池中添加新的常量,如String类的intern()方法就能在运行期间向常量池中添加字符串常量06) 直接存(堆外存)直接存是除Java虚拟机之外的存,但有可能被Java使用操作直接存:在NIO中引入了一种基于通道和缓存的IO方式,他可以调用本地方法的直接分配Java虚拟机之外的存,然后通过一个存储在堆
6、中的DirectByteBuffer对象直接操作该存,而无需将外部存中数据复制到堆中再进行操作,从而提高数据操作的效率,直接存的大小不受Java虚拟机,也会抛出OutOfMemoryError异常直接存和堆存比较:2)类似 -Xms -Xmn这些参数的含义堆存分配 : JVM初始分配的存由-Xms指定,默认是物理存的1/64: JVM最大分配的存由-Xmx指定,默认是物理存的1/4: 默认空余堆存小于40%时,JVM就会增加堆直到-Xmx的最大限制;空余堆存大于70%时,JVM会减少堆直到-Xms的最小限制: 因此服务器一般设置-Xms -Xmx相等以避免在每次GC后调整堆大小. 对象的堆存由
7、成为垃圾回收器的自动存管理系统回收非堆存分配:JVM使用-XX:PermSize 设置非堆存的初始值,默认物理存的1/64; :由XX:MaxPermSize设置设置最大非堆存的大小: -Xmn2G :设置年轻代的大小为2G :-XX:SurvivorRatio ,设置年轻代中Eden区与Survivor区的比值3)垃圾回收的算法有哪些? 引用计数法:原理是在此对象有个引用,即增加一个计数,删除一个引用则减少一个计数.垃圾回收时,只收集计数为0的对象.此算法的最致命的无法处理循环引用的问题: 标记-清除 :此算法分两个阶段,第一阶段从引用的根节点开始标记所有被引用的对象,第二阶段遍历整个堆,把未标记的对象清除,此算法需要暂停应用,同时产生存碎片: 复制算法 此算法把存划分为两个相等的区域,每次只使用一个区域,垃圾回收时,遍历当前使用的区域,把正在使用的对象复制到另一个区域中每次算法每次只处理正在使用的对象,因此复制的成本比较小,同时复制过去以后还能进行相应的存整理,不会出现碎片问题,此算法的缺点也很明显,需要两倍的存空间: 标记-整理:此算法结合了标记-清除和:复制算法的两个的优点,也
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 离婚协议完整范本及签订注意事项
- 建筑工程竣工验收发言稿范文
- 三年级数学教学计划月度模板
- 高校在线教学平台开发计划书
- 2025西欧生物制药行业市场全景深度考察及高技术投资分析报告
- 车床组合机床智能化设计与实现方案
- 2025西亚纺织服装行业市场供需分析及经济评估规划分析研究报告
- 2025蒸汽熨斗行业市场深度调研及发展趋势和前景预测研究报告
- 2025荷兰鲜花出口市场供需态势分析并新设资金周转计划书
- 2025荷兰花卉种植行业市场现状供需分析及冷链物流规划分析研究报告
- 2025冷冻食品运输合同(肉类)
- TLR2对角膜移植术后MDSC分化及DC成熟的调控机制研究
- 建筑设计防火规范-实施指南
- CJ/T 511-2017铸铁检查井盖
- 智能采血管理系统功能需求
- 【基于PLC的自动卷缆机结构控制的系统设计10000字(论文)】
- 资产移交使用协议书
- GB/T 45481-2025硅橡胶混炼胶医疗导管用
- GB/T 32468-2025铜铝复合板带箔
- 山西交控集团招聘笔试内容
- 大窑校本教材合唱的魅力
评论
0/150
提交评论