jvm的GC算法总结

简介: jvm的GC算法总结

   上篇文章了解了jvm的内存模型,那么问题来了:为什么要分区、分代管理呢?也就是jvm对于内存的管理的依据是什么?

   答案是:类和对象的生命周期。

   对象是根据类创建出来的。对象的生命周期就是包含在类的生命周期中:
       类加载(5步)——创建类的实例对象——使用对象——对象回收——类卸载

   

   jvm基于生命周期进行了两方面的管理:分配内存,回收内存。

   1、分配内存是在类加载的时候以及程序运行的时期。

       类加载的过程是怎么样的?(请戳这里)    

   2、回收内存就是垃圾回收,把没用的对象所占的空间回收,也发生在程序运行时期及卸载时期。

   

   什么样的对象是要被回收的?如何找到被回收的对象。这里有两种方式:

   1.引用计数法:对一个对象计数,引用一次加1,若计数为0,表示此对象需要被回收。存在的问题:循环引用。

   2.可达性分析:若从GC Roots出发,通过引用链能到达的对象是可达对象,也就是对程序来说有用的对象,反之,不可达就是垃圾对象,需要被垃圾收集器回收的对象。

   垃圾回收的方法论是垃圾回收算法,而具体执行垃圾回收的是垃圾收集器。

   垃圾收集算法共4种:

       1.标记-清除:

       2.复制:

       3.标记-整理:

       4.分代回收:此算法是把堆区进行了分代管理,分为Young(Eden,survive 0,survive 1),Old。不同的区域用不同的回收算法,也就是不同的垃圾收集器。

   那么问题来了:什么区用什么算法?什么垃圾收集器?

       先了解一下垃圾收集器都有哪几种?

       共七种://TODO待完善

   现在再来理解什么区用什么算法及什么垃圾收集器。

       //TODO:待完善


相关文章
|
11天前
|
算法 网络协议 Java
【JVM】——GC垃圾回收机制(图解通俗易懂)
GC垃圾回收,标识出垃圾(计数机制、可达性分析)内存释放机制(标记清除、复制算法、标记整理、分代回收)
|
3月前
|
缓存 算法 Java
JVM知识体系学习六:JVM垃圾是什么、GC常用垃圾清除算法、堆内存逻辑分区、栈上分配、对象何时进入老年代、有关老年代新生代的两个问题、常见的垃圾回收器、CMS
这篇文章详细介绍了Java虚拟机(JVM)中的垃圾回收机制,包括垃圾的定义、垃圾回收算法、堆内存的逻辑分区、对象的内存分配和回收过程,以及不同垃圾回收器的工作原理和参数设置。
110 4
JVM知识体系学习六:JVM垃圾是什么、GC常用垃圾清除算法、堆内存逻辑分区、栈上分配、对象何时进入老年代、有关老年代新生代的两个问题、常见的垃圾回收器、CMS
|
2月前
|
存储 监控 Java
JVM进阶调优系列(8)如何手把手,逐行教她看懂GC日志?| IT男的专属浪漫
本文介绍了如何通过JVM参数打印GC日志,并通过示例代码展示了频繁YGC和FGC的场景。文章首先讲解了常见的GC日志参数,如`-XX:+PrintGCDetails`、`-XX:+PrintGCDateStamps`等,然后通过具体的JVM参数和代码示例,模拟了不同内存分配情况下的GC行为。最后,详细解析了GC日志的内容,帮助读者理解GC的执行过程和GC处理机制。
|
2月前
|
算法 Java
JVM有哪些垃圾回收算法?
(1)标记清除算法: 标记不需要回收的对象,然后清除没有标记的对象,会造成许多内存碎片。 (2)复制算法: 将内存分为两块,只使用一块,进行垃圾回收时,先将存活的对象复制到另一块区域,然后清空之前的区域。用在新生代 (3)标记整理算法: 与标记清除算法类似,但是在标记之后,将存活对象向一端移动,然后清除边界外的垃圾对象。用在老年代
23 0
|
3月前
|
Arthas 监控 Java
JVM知识体系学习七:了解JVM常用命令行参数、GC日志详解、调优三大方面(JVM规划和预调优、优化JVM环境、JVM运行出现的各种问题)、Arthas
这篇文章全面介绍了JVM的命令行参数、GC日志分析以及性能调优的各个方面,包括监控工具使用和实际案例分析。
88 3
|
3月前
|
算法 Java
JVM进阶调优系列(4)年轻代和老年代采用什么GC算法回收?
本文详细介绍了JVM中的GC算法,包括年轻代的复制算法和老年代的标记-整理算法。复制算法适用于年轻代,因其高效且能避免内存碎片;标记-整理算法则用于老年代,虽然效率较低,但能有效解决内存碎片问题。文章还解释了这两种算法的具体过程及其优缺点,并简要提及了其他GC算法。
 JVM进阶调优系列(4)年轻代和老年代采用什么GC算法回收?
|
3月前
|
存储 算法 Java
【JVM】垃圾释放方式:标记-清除、复制算法、标记-整理、分代回收
【JVM】垃圾释放方式:标记-清除、复制算法、标记-整理、分代回收
76 2
|
3月前
|
缓存 算法 Java
GC垃圾收集算法
这篇文章详细讨论了垃圾收集(GC)的几种算法,包括引用计数、可达性分析、标记-清除、标记-复制和标记-整理算法,并介绍了这些算法的优缺点和适用场景。
44 0
GC垃圾收集算法
|
3月前
|
存储 Java PHP
【JVM】垃圾回收机制(GC)之引用计数和可达性分析
【JVM】垃圾回收机制(GC)之引用计数和可达性分析
88 0
|
13天前
|
机器学习/深度学习 算法
基于改进遗传优化的BP神经网络金融序列预测算法matlab仿真
本项目基于改进遗传优化的BP神经网络进行金融序列预测,使用MATLAB2022A实现。通过对比BP神经网络、遗传优化BP神经网络及改进遗传优化BP神经网络,展示了三者的误差和预测曲线差异。核心程序结合遗传算法(GA)与BP神经网络,利用GA优化BP网络的初始权重和阈值,提高预测精度。GA通过选择、交叉、变异操作迭代优化,防止局部收敛,增强模型对金融市场复杂性和不确定性的适应能力。
145 80