美文网首页
JVM对象分配及垃圾回收机制

JVM对象分配及垃圾回收机制

作者: Dalvik_ | 来源:发表于2021-08-13 19:44 被阅读0次

1、JVM中对象的创建过程。

JVM中对象的创建过程
  • 划分内存的方式:
    指针碰撞:要求堆空间必须时规整的
    空间列表:空间可以是不规整的,必须设置了一个空间列表
  • 解决并发安全问题:
    CAS :compare and swap 失败重试 (无锁化 乐观机制)
    Thread Local Allocation Buffer

2、对象的内存布局及访问方式。

对象的内存布局

Mark Word
对象填充:填充对象数据满足8字节的整数

  • 对象的访问定位
    使用句柄 (做一次地址转换)
    直接指针(访问速度更快,节约一次重定位)hotspot主流 访问方式

3、可达性分析算法与垃圾回收算法。

JVM java中,都是自动化的垃圾回收


判断对象的存活
  • 引用计数法(无法解决循环引用的问题)
  • 可达性分析(根可达) JVM采用的算法

GC Roots =====> Garbage Collection RootSet
静态变量
线程栈变量
常量池
JNI指针
内部引用:class对象、异常对象Exception、类加载器
同步锁:synchronized对象
内部对象:JMXBean
临时对象:跨代引用

  • class对象回收条件

1.class new出的所有对象都被回收掉了
2.类加载器也需要被回收掉
3.类 Java.lang.class对象
4.任何地方没有被引用,并且无法通过反射调用这个类的方法
5.参数控制 -Xnoclassgc 启动时禁止类的垃圾回收

  • Finalize
    对象的拯救,在垃圾回收的时候会回调的一个方法
    只有被回调一次(两次GC就会挂掉)

  • 各种引用
    强引用 =
    软引用 SoftRefrence(即将OOM时回收)
    弱引用 WeakRefrence(只要发生垃圾回收就会被回收)
    虚引用 PhantomRefrence(监控垃圾回收器是否正常)

4、分代回收理论及对象的分配策略。

几乎所有的对象都在堆中进行分配

  • 对象的分配原则
    对象优先在Eden分配
    空间分配担保
    大对象直接进入老年代
    长期存活的对象进入老年代
    动态对象年龄判定

大对象直接进入老年代的条件:
1.垃圾回收器 Serial ParNew
2.-XX:PretenureSizeThreshold=4m 大于这个

  • 虚拟机的优化技术
    逃逸分析 +触发JIT(热点数据) 会被分配到栈区


    对象分配原则
  • 分代回收理论


    回收理论

5.垃圾回收算法

  • 复制回收算法(新生代的算法)
    实现简单、运行简单
    没有内存碎片
    空间利用率只有一半

Appel式的复制回收算法
Appel式回收
提高空间利用率和空间分配担保


复制回收算法
  • 标记-清除算法(Mark-Sweep) 老年代算法
    位置不连续,产生碎片
    可以做到不暂停


    标记-清除算法
  • 标记-整理算法(Mark-Compact) (先标记->再整理->最后清除)


    标记-整体算法

相关文章

  • JVM对象分配及垃圾回收机制

    1、JVM中对象的创建过程。 划分内存的方式:指针碰撞:要求堆空间必须时规整的空间列表:空间可以是不规整的,必须设...

  • Java堆外内存回收方法

    [TOC] 一、JVM内存的分配及垃圾回收 JVM垃圾回收 由于JVM会替我们执行垃圾回收,因此开发者根本不需要关...

  • 深入理解GC 回收机制与分代回收策略

    垃圾回收(Garbage Collection,GC) 指的是JVM的自动内存管理机制,即:当堆内存中分配的对象所...

  • 面向对象

    1. 垃圾回收机制 垃圾回收机制:内存对象的管理,包括对象空间的分配和释放。 对象空间的分配:使用new关键字创建...

  • JVM垃圾回收机制

    JVM垃圾回收 整体思维导图 带着问题理解JVM垃圾回收机制 Java为什么需要垃圾回收机制; 回收哪部分垃圾; ...

  • Java(Android)垃圾回收(GC)

    本文我们主要分析Java中的垃圾回收机制: 1、JVM怎么确定哪些对象应该被回收 2、JVM在什么时候执行垃圾回收...

  • Java垃圾回收机制

    Java垃圾回收机制 在Java中,当没有对象引用指向原先分配给某个对象的内存时,该内存便成为垃圾。JVM的一个系...

  • JVM

    JVM之内存模型JVM之对象定位与访问JVM之Java垃圾回收机制JVM之类加载

  • JVM学习笔记(3)-垃圾收集算法

    JVM学习笔记(1)-内存管理机制 JVM学习笔记(2)-内存分配与回收 垃圾收集算法 JVM垃圾收集算法有四种:...

  • JVM垃圾回收机制

    JVM垃圾回收机制 回收步骤 问题 垃圾标记算法 回收对象:堆中的对象 1.引用计数法 1.1 定义: 堆中的...

网友评论

      本文标题:JVM对象分配及垃圾回收机制

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