栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

[JavaSE] 核心机制之垃圾回收机制

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

[JavaSE] 核心机制之垃圾回收机制

目录
      • JVM简介
      • 垃圾回收简介
      • Garbage colletors
      • Root Searching
      • 常见的垃圾回收算法
        • Mark-Sweep 标记清除
        • Copying 拷贝
        • Mark-Compact 标记压缩

JVM简介

JVM : 为了实现Java的跨平台性质

垃圾回收简介

垃圾收集主要是对内存的释放。创建对象的时候申请一个空间。

  1. 不在使用的内存空间应该回收
  2. Java中消除了回收无用内存空间的职责;提供一种系统级线程跟踪存储空间的分配情况。在JVM的空闲时,检查并释放可释放的存储空间;相比C++开发人员负责要自己收回无用内存
  3. 垃圾收集在Java程序运行过程中自动进行,程序员无法精确控制和干预
  4. GC自动回收,提高了内存空间的利用雄安率,也提高了编程人员的效率,很大程度上减少了因为没有释放空间而导致的内存泄漏

高级的面试题 :

  • 垃圾收集器有几种
  • 垃圾收集器底层原理剖析
  • 垃圾收集器底层算法、优化

小扩展 :
Java : 业务方面
Golang : 专门的中间件或者运维开发
掌握这两门语言,对成为架构师非常给力


Garbage colletors

在三种垃圾回收算法的基础之上,构建了十种垃圾回收器 :

目前生产环境 jdk1.8 , 常用的是
Parallel Scavenge (PS)
Parallel Old (PO)

1.9使用 G1

Root Searching

该方法垃圾回收主要算法之一,简称(根可达性分析)

JVM定义一个名为 GC Roots 的对象作为起始点, 这个 GC Roots可用有多个,从这些节点开始向下搜索,搜索所走过的路径称为引用链(Reference Chain),当一个对象到GC Roots没有任何引用链相链的时候,则证明此对象不可用,即可用进行垃圾回收


GC Roots对象一般包括 :

  • 虚拟机栈(栈帧中本地变量表)中引用的对象
  • 方法区中类静态属性引用的对象
  • 方法区中常量引用的对象
  • 本地方法栈中JNI(Native方法)引用的对象
常见的垃圾回收算法 Mark-Sweep 标记清除

将可回收的垃圾,标记出来并且清理

但是会使得空间碎片化

Copying 拷贝

每次只允许你用一半的内存,我们有用的内存丢到另一半去。

虽然效率很高,但是造成了空间浪费

Mark-Compact 标记压缩

我们找到可回收的内存区块,将其清除,然后将所有有用的对象挪到前面

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/877013.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号