
JVM
文章平均质量分 66
ADRU
这个作者很懒,什么都没留下…
展开
-
JVM中分代回收机制
有些对象可能会长时间的多次调用,然而有些对象朝生墓死,因此就可以将这些经常调用的对象放入老年代中,两个区域之间采取不同的垃圾回收机制,新生代中发生的稍微频繁一些,当内存不足的时候在去清理老年代。当老年代空间不足,会先尝试触发 minor gc,如果之后空间仍不足,那么触发 full gc,STW的时 间更长。新生代空间不足时,触发 minor gc,伊甸园和 from 存活的对象使用 copy 复制到 to 中。当对象寿命超过阈值时,会晋升至老年代,最大寿命是15(4bit)对象首先分配在伊甸园区域。原创 2023-08-16 17:12:47 · 964 阅读 · 2 评论 -
JVM中释放内存的三种方法
标记阶段与可达性分析算法类似,通过从根对象开始遍历对象引用链,标记所有被访问到的对象为存活对象。标记完成后,所有存活对象被标记为"已存活"。标记阶段与可达性分析算法类似,通过从根对象开始遍历对象引用链,标记所有被访问到的对象为存活对象。通过标记-复制算法,内存中只保留了存活对象,将垃圾对象全部清理,并且实现了内存的紧凑布局,使得存活对象在内存中连续存放,提高了内存访问的性能。分为两个阶段,标记和清除,先利用可达性分型标记还存活的对象,之后将没有被标记的对象删除,这样容易生成空间碎片,而且效率不稳定。原创 2023-08-16 14:19:32 · 2606 阅读 · 1 评论 -
JVM中对象和GC Root之间的四种引用关系
如果a,b两个GC Root针对对象c,a 对c为软引用,b对c为强引用,这个时候发生垃圾回收并且在内存不足时,是不会回收掉c的,只有当b对c的引用失效时才会进行清除。(SoftReference) 仅有软引用引用该对象时,在垃圾回收后,内存仍不足时会再次出发垃圾回收,回收软引用对象 可以配合引用队列来释放软引用自身。软引用和弱引用本身都是对象会占用内存空间,可以配合引用队列,将软引用和弱引用的对象清理后放入引用队列,之后就可以遍历清除释放内存。方法,第二次 GC 时才能回收被引用对象。原创 2023-08-16 11:43:53 · 782 阅读 · 0 评论 -
JVM中判定对象是否回收的的方法
当引用计数器的值为0时,说明该对象没有被引用,即可被认定为垃圾对象,可以被垃圾回收器回收内存。可达性分析算法的基本思想是从一组称为"根"的起始对象开始,递归地遍历对象引用链,标记所有被访问到的对象为存活对象,而未被标记的对象则被认定为垃圾对象,可以被垃圾回收器回收内存。在引用计数法中,每个对象都有一个关联的引用计数器,用于记录对该对象的引用数量。可达性分析算法的优点是能够准确地判断对象是否存活,避免了引用计数法中循环引用的问题。通过从根对象开始,可达性分析算法会遍历对象的引用链,找到所有可达对象。原创 2023-08-16 11:10:22 · 1112 阅读 · 0 评论 -
深入学习java虚拟机||JVM内存结构五大模型
定义:全称P r o g r a m C o u n t e r R e gis t e r 程 序 计 数 器 ( 寄 存 器 )作 用 :是 记 住 下 一 条j v m 指 令 的 执 行 地 址特点:是 线 程 私 有 的不 会 存 在 内 存 溢 出(java中唯一一个不会存在内存溢出的区域)作用:java程序要想执行,首先会编译成字节码,也就是计算机能够看懂的二进制文件,但是呢操作系统并不能认识这些二进制字节码,比如一条命令很有可能产生很原创 2023-07-25 17:41:57 · 692 阅读 · 0 评论