垃圾回收重点区域:堆和方法区部分区域。
引用计数算法:
1,引用计数算法:
给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1;当引用失效时,计数器值就减1;任何时刻计数器都为0的对象就是不再被使用的,垃圾收集器将回收该对象使用的内存。
实现简单,判定效率很高。但是很难解决对象之间循环引用的问题。
2,可达性分析算法:
java所使用的垃圾回收算法。
基本思想:通过一系列的名为“GC Root”的对象作为起点,从这些节点向下搜索,搜索所走过的路径称为引用链(Reference Chain),当一个对象到GC Root没有任何引用链相连时,则该对象不可达,该对象是不可使用的,垃圾收集器将回收其所占的内存。
在java中,可作为GC Roots的对象包括下面几种:
a,虚拟机栈(栈帧中的本地变量表)中引用的对象
b,方法区中类静态属性引用的对象
c,方法区中常量引用的对象
d,本地方法栈中JNI(即Native方法)引用的对象


垃圾收集算法:
- 标记-清除算法
缺点:首先,效率问题,标记和清除效率都不高。其次,标记清除之后会产生大量的不连续的内存碎片,空间碎片太多会导致当程序需要为较大对象分配内存时无法找到足够的连续内存而不得不提前触发另一次垃圾收集动作。

- 复制算法
每次都是对其中一块内存进行回收,内存分配时不用考虑内存碎片等复杂情况,只需要移动堆顶指针,按顺序分配内存即可,实现简单,运行高效。
复制算法的缺点显而易见,可使用的内存降为原来一半。

- 标记-整理算法
标记-整理算法在标记-清除算法基础上做了改进,标记阶段是相同的标记出所有需要回收的对象,在标记完成之后不是直接对可回收对象进行清理,而是让所有存活的对象都向一端移动,在移动过程中清理掉可回收的对象,这个过程叫做整理。
标记-整理算法相比标记-清除算法的优点是内存被整理以后不会产生大量不连续内存碎片问题。
复制算法在对象存活率高的情况下就要执行较多的复制操作,效率将会变低,而在对象存活率高的情况下使用标记-整理算法效率会大大提高。

- 分代收集算法
根据对象存活周期不同将内存划分为几块,一般是将堆分为新生代和老年代:
1,新生代,采用复制算法,只需要付出少量存活对象的复制成本
2,老年代,采用标记-清除或者标记-整理。

**

垃圾收集器:


内存分配与回收策略:
- 对象优先在eden分配
大多数情况对象在新生代Eden区分配,当Eden区没有足够空间进行分配时,虚拟机将发起一次Minor GC
- 大对象直接进入老年代
所谓大对象就是指需要大量连续内存空间的Java对象,最典型的大对象就是那种很长的字符串以及数组。这样做的目的是避免Eden区及两个Servivor之间发生大量的内存复制
- 长期存活的对象将进入老年代
如果对象在Eden区出生并且经历过一次Minor GC后仍然存活,并且能够被Servivor容纳,将被移动到Servivor空间中,并且把对象年龄设置成为1.对象在Servivor区中每熬过一次Minor GC,年龄就增加1岁,当它的年龄增加到一定程度(默认15岁),就将会被晋级到老年代中
- 动态对象年龄判定
为了更好地适应不同程序的内存状况,虚拟机并不是永远地要求对象的年龄必须达到了MaxTenuringThreshold才能晋级到老年代,如果在Servivor空间中相同年龄所有对象的大小总和大于Survivor空间的一半,年龄大于或等于该年龄的对象就可以直接进入到老年代,无须等到MaxTenuringThreshold中要求的年龄
- 空间分配担保
在发生Minor GC 之前,虚拟机会检查老年代最大可 用的连续空间是否大于新生代所有对象总空间,如果这个条件成立,那么Minor DC可以确保是安全的。如果不成立,则虚拟机会查看HandlePromotionFailure设置值是否允许担保失败。如果允许那么会继续检查老年代最大可用的连续空间是否大于晋级到老年代对象的平均大小,如果大于,将尝试进行一次Minor GC,尽管这次MinorGC 是有风险的:如果小于,或者HandlePromotionFailure设置不允许冒险,那这时也要改为进行一次Full GC

深入理解java虚拟机-读书笔记2-垃圾收集器和内存分配策略相关推荐

  1. java内存分配和垃圾回收_深入理解java虚拟机(二)垃圾收集器与内存分配策略...

    垃圾收集器与内存分配策略 垃圾收集,三个步骤 什么时候收集,收集那些,怎么收集 1.收集那些 我们会将一些不使用的对象进行收集,进行回收内存空间,我们怎么知道呢 1.引用计数法 如果这个实例被其他地方 ...

  2. 《深入理解java虚拟机》笔记2——GC算法与内存分配策略

    说起垃圾收集(Garbage Collection, GC),想必大家都不陌生,它是JVM实现里非常重要的一环,JVM成熟的内存动态分配与回收技术使Java(当然还有其他运行在JVM上的语言,如Sca ...

  3. Java虚拟机(jvm)——垃圾收集器与内存分配策略

    文章目录 判断对象的存活 引用和对象死亡 4 种引用 宣告对象死亡 回收方法区 垃圾回收算法 标记清除算法: 标记复制算法: 标记整理算法 分代收集算法: 增量收集算法 一些相关的概念: System ...

  4. 《深入理解Java虚拟机》第3章 GC与内存分配策略

    GC的历史远远比Java久远. 哪些需要回收? 何时回收? 怎么回收? GC会成为系统达到更高并发量的瓶颈,所以需要对这些"自动化"的技术实施必要的调节. 程序计数器以及两个栈,三 ...

  5. java虚拟机读书笔记 第三章 垃圾收集器和内存分配策略

    java虚拟机读书笔记 第三章 垃圾收集器和内存分配策略 GC需要完成的三件事情:哪些内存需要回收.什么时候回收.如何回收 垃圾回收器在对堆进行回收前,首先要确定那些对象存活,哪些对象已经死去,判断的 ...

  6. 【深入理解Java虚拟机学习笔记】第三章 垃圾收集器与内存分配策略

    最近想好好复习一下java虚拟机,我想通过深读 [理解Java虚拟机 jvm 高级特性与最佳实践] (作者 周志明) 并且通过写一些博客总结来将该书读薄读透,这里文章内容仅仅是个人阅读后简短总结,加强 ...

  7. Java虚拟机不能满足_深入理解Java虚拟机--读书笔记1/3

    <深入理解Java虚拟机-JVM高级特性与最佳实践> Chap 2 Java内存区域与内存溢出异常 1.Java运行时数据区域 A.程序计数器:当前线程所执行字节码的行号指示器,线程私有( ...

  8. 深入理解java虚拟机-读书笔记

    内存动态分配与内存回收技术已经相当成熟,看起来进入了自动化的时代,为什么还要去了解垃圾收集和内存分配? 当需要排查各种内存溢出.内存泄漏问题时 当垃圾收集成为系统达到更高并发量的瓶颈时 我们就必须对内 ...

  9. 读书笔记——Java虚拟机垃圾收集器与内存分配策略

    本文章已授权微信公众号郭霖(guolin_blog)转载. 本文章讲解的内容是Java虚拟机垃圾收集器与内存分配策略. 概述 说起垃圾收集(Garbage Collection),也就是GC,大部分人 ...

  10. 《深入理解JAVA虚拟机》学习日志----一、自动内存管理机制(2.垃圾收集器与内存分配策略)

    二.垃圾收集器与内存分配策略 前言:讨论的区域集中在Java堆和方法区中,而其他几个区域的内存分配和回收都具备确定性,所以不需过多考虑回收 的问题,因为方法结束或者线程结束时,内存自然就跟随着回收了. ...

最新文章

  1. 05-RARP: 逆地址解析协议
  2. python函数加括号于不加括号的区别
  3. [react] React中怎么检验props?
  4. zabbix巡检脚本
  5. Python学习笔记:列表、字典与集合解析(List, Dict and Set Comprehensions)
  6. Linux开源系统OpenWrt被曝RCE 漏洞已存在3年,数百万网络设备受影响
  7. AtCoder Grand Contest 028题解
  8. Ceph分布式存储学习指南1.12 Lustre
  9. IO多路复用之select、poll、epoll介绍
  10. element-ui在打开两个对话框时出现阴影的解决办法
  11. 怪兽星座欲并购,运动饮料成为新战场?
  12. Java 金额转换 阿拉伯数字金额转换成汉字大写金额
  13. 什么是数字式射频信号发生器
  14. 台式计算机usb接口无反应6,教你电脑usb接口不能用的解决方法
  15. C语言之“先有的鸡还是先有的蛋”浅谈
  16. 身份证号码验证——C语小程序言
  17. 卷积神经网络在物联网场景中的应用初探
  18. 如何引流更精准?如何精准定位客户群体?成功引流方案
  19. java图书管理系统这个怎么改呢
  20. 入手python难不难_Python难不难?容易学吗?

热门文章

  1. 2021.11.14
  2. PAT乙级真题1058 || 选择题(详解,C/C++示例,测试点分析)
  3. Linux系统Debian安装
  4. 字体图标库-如何使用-icomoon
  5. 移动端加载MVT矢量瓦片
  6. IDEA创建maven项目没有src/main/java目录问题
  7. HTML11 表格和表单
  8. Flink入门技术分享PPT之二
  9. ClickHouse(十四)ClickHouse技术分享ppt
  10. 败团---吴家私房菜(别有天茶艺居)