美文网首页
垃圾回收的基本知识

垃圾回收的基本知识

作者: huangxiongbiao | 来源:发表于2018-03-15 13:40 被阅读11次

一、什么样的对象需要回收

1、引用计数回收方式

oc中的回收机制,采用引用计数的方式,引用为0的时候回收对象。此方法易造成循环引用内存泄露

2、可达性回收方式

引用链没有被GC Root对象引用的对象,被当成无用对象进行回收。
GC Root:虚拟机栈,本地方法栈,方法区引用的对象

二、回收的算法

1、标记-清除

扫描内存,发现可回收的对象进行标记,然后清除。
确定易造成内存碎片

2、标记-整理

将需要回收的对象清除后,内存统一向左移动解决内存碎片的问题。
但是每次整理消耗性能严重

3、复制

将内存按1:1分为两部分,一块使用一块空闲,每次清除时将有用的对象复制到空闲区。统一清除使用区的数数据后,将空闲区转换成使用区

4、分代收集法

将内存分为:新生代,老年代,永生代
新生代分为8:1:1三块,将有用的对象复制到小的两块上,大的清除。小的都满了只后移动到老年代区域。
新生代一般采用复制清除,老年代采用标记-整理

三、发生内存清理的时间

新生代,老年代,永久代,某一个内存溢出。
申请内存失败会发生gc
主动调用gc
程序空闲时间

安全点:程序执行跳转,方法调用,循环分支语句的时候,可以Stop-The_World GC
安全区域:程序没有执行的时候,线程处于sleep状态或者blocked状态的时候,这时线程无法响应jvm的中断请求

四、常用的垃圾收集器

1、新生代收集器:

Serial:单线程串行收集器,复制算法,清理时会Stop-The-World
PraNew:Serial的多线程版。算法模式类似上
Parallel Scanvenge :高吞吐量

2、老年代收集器:

Serial Old:单线程串行收集器,作为CMS的后备方案
CMS:并行收集器,收集过程(只能和Serial、PraNew配合使用)
1.初始标记
2.并发标记
3.重新标记
4.并发清除

Parallel Old:老年代多线程标记整理算法

G1:

相关文章

  • 九神带你入门JVM(下)

    我们接着上面一篇继续学习JVM的基本知识。 对象存活判断 上篇中我们介绍过JVM垃圾回收综述中说过一次垃圾回收之后...

  • 垃圾回收的基本知识

    一、什么样的对象需要回收 1、引用计数回收方式 oc中的回收机制,采用引用计数的方式,引用为0的时候回收对象。此方...

  • 简单理解垃圾回收

    什么是垃圾回收? 垃圾回收的是什么? 如何判断为垃圾? 垃圾是怎样被回收的? 垃圾回收哪些区域的内存? 什么是垃圾...

  • JVM调优之垃圾定位、垃圾回收算法、垃圾处理器对比

    谈垃圾回收器之前,要先讲讲垃圾回收算法,以及JVM对垃圾的认定策略,JVM垃圾回收器是垃圾回收算法的具体实现,了解...

  • 01垃圾回收机制

    垃圾回收(Garbage Collection,GC) 垃圾回收就是释放垃圾占用的空间 内存的动态分配和垃圾回收,...

  • 垃圾回收

    如何查看当前JVM使用的垃圾回收器? 如何指定使用CMS回收? 如何打印回收日志? 垃圾回收过程 CMS垃圾回收的...

  • JVM常见垃圾回收器介绍

    垃圾回收器简介 在新生代和老年代进行垃圾回收的时候,都是要用垃圾回收器进行回收的,不同的区域用不同的垃圾回收器。分...

  • JVM(二) GC算法与分代回收策略

    可达性分析 GCRoot场景 垃圾回收算法 分代回收策略 引用 垃圾回收 垃圾回收(Garbage Collect...

  • JavaScript的垃圾回收机制

    大纲 1、认识垃圾回收机制2、垃圾回收机制的原理3、垃圾回收机制的标记策略4、垃圾回收机制与内存管理 1、认识垃圾...

  • 一文带你深入了解JVM性能调优以及对JVM调优的全面总结

    目录 JVM调优 概念 基本垃圾回收算法 垃圾回收面临的问题 分代垃圾回收详述1 分代垃圾回收详述2 典型配置举例...

网友评论

      本文标题:垃圾回收的基本知识

      本文链接:https://www.haomeiwen.com/subject/jcpcqftx.html