垃圾回收核心内容总结 您所在的位置:网站首页 案例分析文章主要是针对什么内容 垃圾回收核心内容总结

垃圾回收核心内容总结

2023-06-02 01:52| 来源: 网络整理| 查看: 265

垃圾回收核心内容总结 1.为什么要有垃圾回收

因为内存空间是有限的,如果使用过后不释放,一直占用,会导致剩余的空间越来越少,进一步导致后续再进行内存申请时失败。

2.垃圾回收主要回收哪个内存区域

堆上。因为栈中的元素是栈帧,栈帧又是保存的方法之间的调用关系,当方法调用完成之后,栈帧会自动销毁,空间得以释放,而堆不能自动释放,需要专门的工具进行垃圾回收。

另外程序计数器一个线程只有一个,当线程销毁,它也不复存在,方法区里放的类对象、静态成员变量什么的,它们类一般是加载,卸载也可以但是没有必要。

所以GC主要针对的内存区域是堆。

3.标记的过程

Java中标记垃圾实现一般是可达性分析。

在可达性分析过程中,Java代码中所有的对象通过类似左子树右子树的链式/树形结构整体串联到一起,这个大结构视为一颗树,从树根节点出发,遍历树,所有能被访问到的对象,标注为可达,不能被访问到的,就是不可达的。在遍历过程中,JVM自己会有一个类似名单一样的东西,做标注。

有可能成为树根节点即可达性分析遍历的起点的对象一般有三类,分别是栈上的局部变量、常量池中的对象、静态成员变量。在一个代码总可能有很多这样的起点,把每个起点都向下遍历一遍,就完成了一次扫描过程。

4.回收的过程

回收的实现主要有三种算法,分别是标记清除、复制算法、标记整理。结合他们三者,又有一种常见的复合策略——分代回收。

这里已经提过,不再赘述。

回收算法介绍

5.垃圾回收器有哪些典型的实现 Serial Old收集器(老年代收集器,串行GC)Parallel Old收集器(老年代收集器,并行GC)CMS收集器(老年代收集器,并发GC )G1收集器(唯一一款全区域的垃圾回收器)


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有