IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> JVM3--垃圾回收机制:垃圾回收算法、垃圾回收器 -> 正文阅读

[数据结构与算法]JVM3--垃圾回收机制:垃圾回收算法、垃圾回收器

一、垃圾回收概述?

1、垃圾对象:运行程序中没有任何指针指向的对象

2、垃圾回收区域:?方法区+堆空间

? ? ? ?频繁回收Young区

? ? ? ?较少回收old区

? ? ? ?基本不动Perm区(或元空间)

3、垃圾回收的两个阶段

? (1)标记阶段

? ? ? ? 引用计数算法

? ? ? ? 可达性分析算法

?(2)清除阶段

? ? ? ?标记-清除算法

? ? ? ?标记-复制算法

? ? ? ?标记-压缩算法

4、运行时数据区垃圾回收情况

? ?(1)方法区------------有GC+OOM(outofmemory内存溢出,堆溢出)

? ? (2)堆----------------有GC+OOM

? ? (3)程序计数器-------都没有

? ? (4)本地方法栈-------没有GC,有SOF(stack over flow栈溢出)

? ? (5)虚拟机栈------------没有GC,有SOF

二、垃圾标记阶段

?目的:区分出内存中哪些是存活对象,哪些是死亡对象

? ? ? ? ? ?当一个对象已经不在被任何的存活对象继续引用时,就是垃圾对象

(一)引用计数法(java中不用)

1、每个对象保存一个整型的引用计数器属性,用于记录对象被引用情况

2、当一个对象引用该对象,引用计数器就+1,当引用失效时,引用计数器就-1

? ??只要对象的引用计数器的值为0,则表示对象可进行回收

3、缺点

? ?(1)需要单独的字段存储计数器,增加空间开销?

? ?(2)经常更新计数器,增加增加开销

? ?(3)无法处理循环引用情况

(二)可达性分析(根搜索算法,追踪性垃圾收集)

1、可以解决循环引用问题

2、使用条件

? ? 保证数据一致性

2、原理:

? ?以跟对象集合为起始点(GC Roots),

? ?按从上至下的方式搜索被根对象集合所连接的对象是否可达

? ?可达---非垃圾;不可达---垃圾

3、根对象集合(GC Roots )

? ?一组必须活跃的引用,主要有以下几类元素:

?(1)Java虚拟机栈中引用的对象 :局部变量

?(2)本地方法栈中引用的对象:引用类型静态变量,类变量

? ?(3)方法区中引用的常量对象:字符串常量池里的引用

?(4)被同步锁synchronized持有的对象

? ?(5)分代收集和局部回收

4、MAT---可以查询GC Root??

? ? ?一款强大的Java堆内存分析器

?5、对象的状态

? ? ? ?可触及----不是垃圾

? ? ? ?可复活---是垃圾,但是可以通过调用重写的finalize()复活

? ? ? ?不可触及--是垃圾,且已经调用了finalize(),但这个方法只能被调用一次,因此不可再复活

三、垃圾清除阶段

待更.....

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-10-23 12:44:52  更:2021-10-23 12:46:01 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 8:31:16-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码