简单了解GC垃圾回收器

了解GC之前我们首先要了解GC是要做什么的?顾名思义回收垃圾,什么是垃圾呢?

GC回收的垃圾主要指的是回收堆内存中的垃圾对象。

从根对象出发,所有被引用的对象,都是存活对象 其他对象,都是垃圾对象。

根对象:

栈中的引用变量,所引用的对象。

方法区经静态变量所引用的对象。

GC回收的三种基本方式

一、标记-清除

标记存活对象,清理其他垃圾对象(阴影为存活对象,空白为垃圾对象)

优点:效率高

缺点:产生碎片,使内存分布碎片化,造成内存空间不连续。若出现大的对象,内存空间不连续则难以存取

二、标记-整理

标记存活对象,清除垃圾对象,对垃圾对象进行整理

优点:没有碎片

缺点:效率低

三、复制

在内存中分配两块内存,将标记的存活对象复制到另一块内存当中,

再将原内存的对象清除。

优点:效率高

缺点:浪费内存

内存分区

新生代

老年代

永久代(方法区)(在Java8中,永久代已经被移除,被一个称为“元数据区”(元空间)的区域所取代)

新生代

主要是用来存放新生的对象。一般占据堆的1/3空间。由于频繁创建对象,所以新生代会频繁触发MinorGC进行垃圾回收

新生代又分为伊甸园与生存区,生存区分为ServivorFrom、ServivorTo

Eden区(伊甸园):Java新对象的出生地(如果新创建的对象占用内存很大,则直接分配到老年代)。当Eden区内存不够的时候就会触发MinorGC,对新生代区进行一次垃圾回收。

ServivorTo:保留了一次MinorGC过程中的幸存者。

ServivorFrom:上一次GC的幸存者,作为这一次GC的被扫描者。

过程:

新建对象,在伊甸园分配内存

伊甸园存满,复制到from

from存满,复制到to,并交换角色

对象在from,to之间复制15次,晋升到老年代

老年代

标记-清除、标记-整理

间隔一段时间,会执行一次小范围垃圾回收

当老年代空间占用到一定比例 0.85,会执行full-gc

当老年代也满了装不下的时候,就会抛出OOM(Out of Memory)异常。

常见的垃圾回收器

串行垃圾回收器(Serial Garbage Collector)

并行垃圾回收器(Parallel Garbage Collector)

并发标记扫描垃圾回收器(CMS Garbage Collector)

G1垃圾回收器(G1 Garbage Collector)

了解主要的两种(CMS,G1)

CMS - 并发的标记-清除

STW(Stop The World)时间非常短暂

初始标记(stw)

只标记根对象

并发标记

垃圾回收器,与其他java程序并行执行

重新标记(stw)

并发清除

与其他java程序并行执行,配置参数过多,使用过于复杂

总结:

是一种以获得最短回收停顿时间为目标的收集器,基于标记清除算法。过程如下:初始标记,并发标记,重新标记,并发清除,

优点是并发收集,低停顿,缺点是对CPU资源非常敏感,无法处理浮动垃圾,收集结束会产生大量空间碎片。

G1 - Garbage First

内存被划分成几千个内存块

有伊甸园、生存区、老年代

用复制算法

G1会找到垃圾最多的内存块,优先回收

配置参数非常简单,只需要配置目标停顿时间(stw),G1自动调整其他参数,来达到预期的停顿时间

总结:G1垃圾回收器适用于堆内存很大的情况,他将堆内存分割成不同的区域,并且并发的对其进行垃圾回收。G1也可以在回收内存之后对剩余的

堆内存空间进行压缩。并发扫描标记垃圾回收器在STW情况下压缩内存。G1垃圾回收会优先选择第一块垃圾最多的区域

[Java基础]-- Java GC 垃圾回收器的分类和优缺点

https://blog.csdn.net/high2011/article/details/80177473?utm_source=blogxgwz2 参考:elasticsearch实战-使用G1 ...

.NET GC垃圾回收器

GC垃圾回收器简介 全名: Garbage Collector 原理: 以应用程序的根(root)为基础,遍历应用程序堆(heap)上动态分配的所有对象,通过识别它们是否被引用来确定哪些对象是已经死亡 ...

GC垃圾回收器

java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的“高墙”.jvm解决的两个问题:给对象分配内存以及回收分配给对象的内存.GC:将内存中不再被使用的对象进行回收.GC的作用域是JVM运行时 ...

一篇文章说完Java的垃圾回收过程

想要了解java的垃圾回收过程首先要理解java堆的内存模型,简单表示如下:   从上面的图片可以看出,java的堆内存可以简单的分为,新生代和老年代,在新生代中有分为三个区域,1个Eden区和2个S ...

GC(垃圾回收器)中的算法

GC的两种判定方法 (1) 引用计数法 给对象添加一个引用计数器,每当引用一次+1,每次失效时-1,当计数器为0时,表示对象就是不可能再被使用的. (2) 可达性分析算法 将“GC Roots”对象作 ...

Java虚拟机笔记(二):GC垃圾回收和对象的引用

为什么要了解GC 我们都知道Java开发者在开发过程中是不需要关心对象的回收的,因为Java虚拟机的原因,它会自动回收那些失效的垃圾对象.那我们为什么还要去了解GC和内存分配呢? 答案很简单:当我们需 ...

Android内存优化5 了解java GC 垃圾回收机制3

引言 接App优化之内存优化(序), 作为App优化系列中内存优化的一个小部分. 由于内存相关知识比较生涩, 内存优化中使用到的相关工具, 也有很多专有名词. 对Java内存管理, GC, Andro ...

牛客网Java刷题知识点之垃圾回收算法过程、哪些内存需要回收、被标记需要清除对象的自我救赎、对象将根据存活的时间被分为:年轻代、年老代(Old Generation)、永久代、垃圾回收器的分类

不多说,直接上干货! 首先,大家要搞清楚,java里的内存是怎么分配的.详细见 牛客网Java刷题知识点之内存的划分(寄存器.本地方法区.方法区.栈内存和堆内存) 哪些内存需要回收 其实,一般是对堆内 ...

JVM学习第二天(垃圾回收器和内存分配策略)大章

说道垃圾回收器大家应该都会有所了解,GC白,当然说道具体的可能就不是很清楚了,今天我们就来玩一玩; GC要做的事情: 第一步:确定堆中需要回收的对象; 第二步:什么时候回收; 第三步:怎样回收 为什么 ...

随机推荐

Make div 100% height of browser window/设置div等于浏览器的高度

Viewport-Percentage (or Viewport-Relative) Lengths Viewport-Percentage Lengths: The viewport-percent ...

linux下网卡启动、配置

步骤1.配置/etc/sysconfig/network-scripts/ifcfg-eth0 里的文件. ifcfg-eth0的配置详情:[root@localhost ~]# vim /etc/s ...

[HttpClient]简单使用GET请求

package com.jerry.httpclient; import java.io.IOException; import org.apache.http.HttpEntity; import ...

PADS封装

CAE 是原理图符号DECAL 是PCB封装PART 是将 CAE和 DECAL结合映射起来.比如PART包含了CAE和DECAL的管腿对应关系.CAE的1号腿,不一定对应DECAL的1号腿的.Pin ...

PowerShell脚本—停止占用8080端口的进程

$str = netstat -ano $list = $str.Split('\n') ; $i -lt $list.Length; $i++) { $item_list = [System.Tex ...

Helm介绍

1.为什么要用Helm? 首先在原来项目中都是基于yaml文件来进行部署发布的,而目前项目大部分微服务化或者模块化,会分成很多个组件来部署,每个组件可能对应一个deployment.yaml,一个se ...

设置MessageBox自动关闭

通过设置定时器,让定时器的Tick事件模拟往MessageBox发送一个Enter按钮代替用鼠标点击MessageBox上的确定按钮,来实现MessageBox的自动关闭,实现代码如下: System ...

Kafka获取订阅某topic的所有consumer group【客户端版】

之前写过如何用服务器端的API代码来获取订阅某topic的所有consumer group,参见这里.使用服务器端的API需要用到kafka.admin.AdminClient类,但是这个类在0.11 ...

android 首字母迷糊查询 拼音查询 中英文混排查询

对于这个问题,还没有动手去做,暂且查了查资料,把思路记录下来: 1. 数据库保存拼音+汉字.在插入数据库的时候将这些信息保存下来,将来可以进行首字母模糊查询,拼音查询,中英文混排查询(参考手机通讯录数 ...

41 MYSQL 索引和慢查询优化

一 .索引mysql 索引 b+tree 本质:通过不断地缩小想要获取数据的范围来筛选出最终想要的结果,同时把随机的事件变成顺序的事件,也就是说,有了这种索引机制,我们可以总是用同一种查找方式来锁定数 ...

java常见的gc回收器_一篇文章让你了解GC垃圾回收器相关推荐

  1. java ee 值范围_一篇文章带你读懂: Java EE

    原标题:一篇文章带你读懂: Java EE 点击上图,查看教学大纲 何为 Java EE Java EE是一个标准中间件体系结构 不要被名称"Java PlatformEnterprise ...

  2. java学到能看懂代码_一篇文章能够看懂基础源代码之JAVA篇

    一篇文章能够看懂基础源代码之JAVA篇 发布时间:2020-05-19 11:20:32 来源:51CTO 阅读:305 作者:栖木之地 java程序开发使用的工具类包:JDK(java develo ...

  3. Java异常捕获论文_一篇文章解决Java异常处理

    前言 与异常相关的内容其实很早就想写了,但由于各种原因(懒)拖到了现在.在大二开学前夜(今天是8.31)完成这篇博客,也算完成了暑期生活的一个小心愿. 以下内容大多总结自<Java核心技术 卷Ⅰ ...

  4. java 不重启部署_一篇文章带你搞定SpringBoot不重启项目实现修改静态资源

    一.通过配置文件控制静态资源的热部署 在配置文件 application.properties 中添加: #表示从这个默认不触发重启的目录中除去static目录 spring.devtools.res ...

  5. c++ socket线程池原理_一篇文章看懂 ThreadLocal 原理,内存泄露,缺点以及线程池复用的值传递问题...

    编辑:业余草来源:https://www.xttblog.com/?p=4946 一篇文章看懂 ThreadLocal 原理,内存泄露,缺点以及线程池复用的值传递问题. ThreadLocal 相信不 ...

  6. Java读取excel的方式,一篇文章看懂(详细)

    目录 一.excel读取的两种方式 1.1 jxl 和 poi 的区别和选择 二.jxl 的使用 2.1 导入相关依赖 2.2 操作 三.poi 的使用 3.1 导入相关依赖 3.2 操作 四.总结 ...

  7. spring框架_一篇文章带你理解Spring框架

    虽然现在流行用SpringBoot了,很多配置已经简化和封装了,但是对于Spring的一些基础我们了解一些是对我们自己的架构思想很有帮助的!接下来和笔者一起来探讨一下Spring框架吧! 1.什么是S ...

  8. python 的库如何开发_一篇文章入门Python生态系统

    译者按:原文写于2011年末,虽然文中关于Python 3的一些说法可以说已经不成立了,但是作为一篇面向从其他语言转型到Python的程序员来说,本文对Python的生态系统还是做了较为全面的介绍.文 ...

  9. 了解mysql文章_一篇文章带你深入了解MySQL 索引相关

    基础知识 一张数据表中具有百万级的数据时,如何精确且快速的拿出其中某一条或多条记录成为了人们思考的问题. InnoDB 存储引擎的出现让这个问题得到了很好的解决, InnoDB 存储引擎是以索引来进行 ...

最新文章

  1. PlayMaker的Transition和Global Transition
  2. list.php tid= field,织梦CMS初试-套用指定的html模板,解析内容列表【笔记】
  3. 微信小程序函数调用监控
  4. UA MATH523A 实分析3 积分理论例题 Fubini定理计算重积分的极限
  5. php7实践指南图书手册
  6. 刷抖音对手机有什么要求_6频段全面5G手机 nova6 5G成新年换机最佳之选
  7. python zipfile 文件压缩和文件
  8. unicode 与 utf-8
  9. (计算机组成原理)第一章计算机系统概述-第二节:计算机硬件组成(存储器、运算器和控制器概述及计算机工作过程详解)
  10. XGBoost原理与实例分析
  11. 剑指offer——面试题3:二维数组中的查找
  12. 离线人脸识别C#类库分享 虹软2.0版本
  13. DMclone for Mac(磁盘克隆软件)
  14. 教务管理系统C++实现
  15. 阶段3 3.SpringMVC·_07.SSM整合案例_08.ssm整合之Spring整合MyBatis框架
  16. rffc2071_基于RFFC2071的变频器设计
  17. 怎样音频转文字?用这些音频转文字免费版就可以啦
  18. 计算机网络技术毕业生实习报告_计算机*应届毕业实习报告范文
  19. 数据分析 - 用户中台(学习笔记)
  20. 让你的桌面井井有条,4款桌面整理工具推荐

热门文章

  1. 网络***检查分析---破解安全隐患问题回答
  2. 关于C/C++程序的一些规范(2005-5-10)
  3. ae图片无缝循环滚动_HTML图片滚动
  4. limit mongodb 聚合_mongodb-$type、limit、skip、sort方法、索引、聚合
  5. C#图解教程读书笔记(数组)
  6. Linux用户基础操作入门
  7. Mysql事务控制语言
  8. android使用lombok_Android Studio 使用Lombok
  9. 深信服防火墙console波特率_乾颐盾之深信服防火墙------初始化教程
  10. canny边缘检测算法_OpenCV4中调用HED边缘检测算法