JVM面试题
文章平均质量分 70
JVM面试题
鸣鼓ming
这个作者很懒,什么都没留下…
展开
-
09-JAVA四种引用类型?
在JDK1.2版之后,Java对引用的概念进行了扩充,将引用分为强引用(Strongly Reference)、软引用(Soft Reference)、弱引用(Weak Reference)和虚引用(Phantom Reference)4种,Java中4种引用的级别由高到低依次为:强引用 > 软引用 > 弱引用 > 虚引用.原创 2023-01-10 21:13:54 · 203 阅读 · 0 评论 -
08-什么是类加载器,类加载器有哪些, 双亲委派模型机制?
通过继承 java.lang.ClassLoader 类的方式实现。原创 2023-01-10 17:00:34 · 425 阅读 · 0 评论 -
07-JVM 类加载机制?
1.JVM 类加载机制分为五个部分:加载,验证,准备,解析,初始化。2.一个类型从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期将会经历加载(Loading、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization入、使用(Using)和卸载(Unloading)七个阶段,其中验证、准备、解析三个部分统称为连接(Linking)。这七个阶段的发生顺序所示。原创 2023-01-09 21:06:27 · 331 阅读 · 0 评论 -
06-GC垃圾收集器有那些?
如图展示了HotSpot虚拟机中7种不同的垃圾收集, 连线代表两者可搭配使用。原创 2023-01-08 21:23:08 · 360 阅读 · 0 评论 -
05-安全点和安全域是什么?
而主动式中断的思想是当垃圾收集需要中断线程的时候,不直接对线程操作,仅仅简单地设置一个标志位,各个线程执行过程时会不停地主动去轮询这个标志,一旦发现中断标志为真时就自己在最近的安全点上主动中断挂起。抢先式中断不需要线程的执行代码主动去配合,在垃圾收集发生时,系统首先把所有用户线程全部中断,如果发现有用户线程中断的地方不在安全点上,就恢复这条线程执行,让它一会再重新中断,直到跑到安全点上。安全区域是指能够确保在某一段代码片段之中,引用关系不会发生变化,因此,在这个区域中任意地方开始垃圾收集都是安全的。原创 2023-01-06 17:55:55 · 380 阅读 · 0 评论 -
04-GC的常见收集方法:标记清除、标记复制、标记整理算法、分代收集的原理与特点?
每次只使用其中一块,当这一块内存满后将尚存活的对象复制到另一块上去,把已使用。老生代的特点是每次垃圾回收时只有少量对象需要被回收,新生代的特点是每次垃。分代收集法是目前大部分 JVM 所采用的方法,其核心思想是根据对象存活的不同生命周期将内存。理对象,而是将存活对象移向内存的一端, 然后直接清理掉端边界外的内存。圾回收时都有大量垃圾需要被回收,因此可以根据不同区域选择不同的算法。最基础的垃圾回收算法,分为两个阶段,标记和清除。2.清除阶段回收被标记的对象所占用的空间。1.标记阶段标记出所有需要回收的对象。原创 2023-01-06 16:22:29 · 416 阅读 · 0 评论 -
03-GC对象的两种判定方法(如何判断对象已死)?
为了解决引用计数法的循环引用问题,Java 使用了可达性分析的方法。通过一系列的“GC roots”对象作为起点搜索。如果在“GC roots”和一个对象之间没有可达路径,则称该对象是不可达的。要注意的是,不可达对象不等价于可回收对象,不可达对象变为可回收对象至少要经过两次标记过程。两次标记后仍然是可回收对象,则将面临回收。指的是如果某个地方引用了这个对象就+1,如果失效了就-1,当为 0 就会回收, 但是 JVM 没有用这种方式,因为无法判定相互循环引用(A 引用 B,B 引用 A)的情况。原创 2023-01-06 11:53:42 · 149 阅读 · 0 评论 -
02-JVM堆里面的分区:Eden,survival (from+ to),老年代,各自的特点?
在过去自定义类加载器使用不普遍的时候,类几乎是“静态的” 并且很少被卸载和回收,因此类也可以被看成 “永久的”(这也就是永久代的含义),另外由于类作为JVM实现的一部分,它们不由程序来创建,所以为了和堆区分开来呢,就给了 “方法区” 这样一个名字用来存储类的信息。因此,默认情况下,元空间的大小仅受本地内存限制。在JDK 8之前,方法区的具体实现方法是永久代,永久代是HotSpot虚拟机给出的实现,但是对于其他虚拟机实现,譬如BEA JRockit、IBM J9等来说,是不存在永久代的概念的。原创 2022-12-31 21:14:36 · 1967 阅读 · 0 评论 -
01-JVM内存模型以及分区,需要详细到每个区放什么?
栈的结构是栈帧组成的,调用一个方法就压入一帧,帧上面存储局部变量表,操作数栈,动态链接, 返回地址等信息,局部变量表存放的是八大基础类型加上一个应用类型,所以还是一个指向地址的指针。JVM 分为堆区和栈区,还有方法区,初始化的对象放在堆里面,引用放在栈里面,class 类信息常量池(static 常量和 static 变量)等放在方法区。存储初始化的对象,成员变量 (那种非 static 的变量),所有的对象实例和数组都要在堆上分配。主要存储Native 方法服务。记录当前线程执行的行号。原创 2022-12-30 10:51:42 · 401 阅读 · 0 评论