java虚拟机知识____应付面试应该是够用了

JVM 目录

  1. JVM 体系结构概述
    1.1 类的加载机制
    1.2 类的加载器有哪几种
    1.3 双亲委派机制
    1.4 沙箱安全机制
  2. 堆 体系结构概述
  3. 堆 参数调优入门
1.JVM体系结构概览

2. 类加载器
  • 类的加载器一共有三种 BootStrapClassLoader、ExtensionClassLoader、AppClassLoader。加载顺序如下

  • BootStrapClassLoader 加载下面路径下的依赖包

C:\Program Files (x86)\Java\jdk1.8.0_191\jre\lib\rt.jar

  • ExtensionClassLoader 加载下面路径下的依赖包

C:\Program Files (x86)\Java\jdk1.8.0_191\jre\lib\ext

  • AppClassLoader

加载用户自定的类

  • 面试题: 双亲委派机制 当要加载一个类的是的时候、通常会从上向下区加载、首先查看BootStrapClassLoader、ExtensionClassLoader、AppClassLoader 如果存在的会父类区加载。这样可以保证对象的唯一。这个唯一性也就是沙箱安全机制。
3. 本地方法栈
  • 本地方法栈 负责加载由其他语言编写的依赖包、例如C语言或者C++语言编写的业务逻辑。场景在与硬件交互的场景下会使用
4. JAVA栈
  • Java栈 复杂加载程序运行、栈的生命周期与线程同步、算法逻辑为先进后出。存储的为 基本数据类型 + 对象引用变量 + 实例方法等。

  • 栈帧 代表的是每执行类中的一个方法都会产生一个栈帧。包括输入、输出变量、局部变量。进栈出栈的相关操作。

5. 程序计数器
  • 所有线程私有、占用空间小。记录的是程序的执行顺序。
6. 方法区
  • 存储的是文件的结构信息

7.堆 体系结构概述

知识点 一
堆内 存包括如下三个部分 新生代 、老年代、元空间。三者占比为  1 :  2 : 0  
 
备注 jdk1.8 以后 元空间替代永久代 ,并且元空间占用的是物理内存而不是虚拟机内存, 占用的物理内存比例为 0.25 . 
知识点 二
在新生代中  伊甸园: 幸存者0 区:幸存者1 区 占比为 8 : 1 : 1
知识点 三

在jdk 1.8 当中 堆内存只包括两部分 新生代 + 老年代 ,默认情况最大内存为总内存的1/4、初始内存为1/64

参数含义   
                 1.    -- Xms    堆当中初始化内存 
                 2.   -- Xmm   堆当中最大内存   
                 3.   -- Xmn    新生代占用内存
 
在参数调优目标:     减小GC程序的回收次数、提高GC程序的执行效率、因为GC程序的执行会影响程序的运行效率。
方法1   将堆的初始内存 设置为 堆的最大内存
知识点 四 垃圾回收机制的执行流程
 
在新生代     1.   伊甸园区做gc操作将存活的         对象拷贝到 幸存者0区 
            2.   当幸存者0满了 以后做GC操作将  对象拷贝到  幸存者1 区
 
在老年代     3.  当幸存者1区满了 以后做GC 操作   将存货的对象拷贝到 老年代区
            4.  当老年代 满了以后 会做 FULL GC 操作 
            5.  Full GC 操作以后发现 由于空间原因 无法将对象进行保存 就会出行 OOM 错误,因此发送异常区域在老年代
知识点 五
在老年代执行FULL GC的效率是 小于  在新生代 执行GC 效率的。 原因是因为老年代空间是新生代的2倍。但是老年代执行的效率却比新生代慢了大约8-10倍
知识点 六 GC回收算法

在堆当中 对于不同的区域会执行不同的算法, 算法的效率不存在好坏。只有是否适合。

GC回收算法 
 
(1 ) 引用计数发 :对象被引用一次就是会 +1 、引用第二次 +1 +1 。如果不在引用就会 -1 。
缺点 维护计数器本身也会消耗资源 、对于循环引用复杂度高。已经废弃了
 
(2) 复制算法 : 作用在新生代、对象在做GC操作的时候对象 对象会被复制。
 
优点: 对象在内存是连续、不会产生碎片化
缺点: 占用空间 、因为被复制两次
 
(3) 标记算法 :作用在老年、执行逻辑 第一次标记要清除的对象、第二次清楚对象
优点: 无空间的占用
缺点:  对象在内存中不是连续的、产生碎片化
 
(4) 标记压缩算法 : 作用在老年代  执行逻辑 第一次标记要清除的对象、第二次清楚对象 、第三步压缩对象
 
优点: 无碎片化
缺点: 时间复杂度高

关注微信公众号程序员睿睿

关注后回复 java虚拟机
获取 《深入理解Java虚拟机JVM高级特性与最佳实践》

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/a18302465887/article/details/106025281