JVM
文章平均质量分 93
jvm
猪大侠0.0
这个作者很懒,什么都没留下…
展开
-
最新JVM面试题(持续更新)
现代的商业虚拟机都采用这种收集算法来回收新生代,IBM公司的专门研究表明,新生代中的对象大概98%是“朝生夕死”的。即绝大部分都会在Eden区被回收。Java的NIO库允许Java程序使用直接内存。直接内存是在java堆外的、直接向系统申请的内存空间。通常访问直接内存的速度会优于Java堆。因此出于性能的考虑,读写频繁的场合可能会考虑使用直接内存。由于直接内存在java堆外,因此它的大小不会直接受限于Xmx指定的最大堆大小,但是系统内存是有限的,Java堆和直接内存的总和依然受限于操作系统能给出的最大内存。原创 2024-03-06 21:50:05 · 728 阅读 · 0 评论 -
jvm垃圾回收算法有哪些及原理
Serial收集器、Parallel收集器、ParNew收集器、CMS收集器、G1回收器及三色标记算法的详细讲解。单线程执⾏垃圾收集,收集过程中会有较⻓的STW(stop the world),在GC时⼯作线程不能⼯作。虽然STW较⻓,但简单、直接。新⽣代采⽤复制算法,⽼年代采⽤标记-整理算法。原创 2023-10-24 11:00:31 · 429 阅读 · 0 评论 -
JVM 垃圾回收算法详解
分代回收算法本质是上述各算法的结合优化,当前大多商用虚拟机都采用这种分代回收算法。其实大多数对象生命周期非常短,所以在发生GC时,需要回收的对象特别多,存活的特别少,因此需要搬移到另一块内存的对象非常少,所以不需要1:1划分内存空间。而是将整个空间划分为`新生代`(1/3)和`老年代`(2/3)。新生代按照8 : 1 : 1的比例划分为三块,最大的称为`Eden(伊甸园)区`,较小的两块分别称为`To Survivor`和`From Survivor`(幸存者区或存活区)。原创 2023-10-16 10:23:42 · 166 阅读 · 0 评论 -
JVM 垃圾回收机制(可达性分析、引用计数)
垃圾是指在运行程序中没有任何指针指向的对象,就是需要被回收的。在堆空间和元空间中,GC这条守护线程会对这些空间开展垃圾回收⼯作,那么**GC如何判断这些空间的对象是否是垃圾**,有两种算法`引用计数法`和`可达性分析算法`:可达性分析算法是通过一系列被称为「GC Roots」的根对象作为起始节点集,从这些节点开始,通过引用关系向下搜寻,搜寻走过的路径称为「引用链」,如果某个对象到GCRoots没有任何引用链相连,就说明该对象不可达,即可以被回收。原创 2023-10-15 20:28:51 · 387 阅读 · 0 评论 -
JVM运行时数据区
运⾏时数据区也就是JVM在运⾏时产⽣的数据存放的区域,这块区域就是JVM的内存区域,也称为JVM的内存模型——JMM(Java Memory Model)JMM分成了这么⼏个部分堆空间(线程共享):存放new出来的对象元空间(线程共享):存放类元信息、类的模版、常量池、静态部分线程栈(线程独享):⽅法的栈帧本地⽅法栈(线程独享):本地⽅法产⽣的数据程序计数器(线程独享):配合执⾏引擎来执⾏指令**注:**堆、元空间(含方法区)是线程共享的,线程栈、本地⽅法栈、程序计数器是独享的。原创 2023-10-14 10:02:35 · 292 阅读 · 0 评论 -
类加载器、双亲委派机制
当类加载进⾏加载类的时候,类的加载需要向上委托给上⼀级的类加载器,上⼀级继续向上委托,直到启动类加载器。启动类加载器去核⼼类库中找,如果没有该类则向下委派,由下⼀级扩展类加载器去扩展类库中,如果也没有继续向下委派,直到找不到为⽌,则报类找不到的异常。双亲委派机制的流程如下:ClassLoader.class中的Class原创 2023-10-10 20:32:51 · 89 阅读 · 0 评论