垃圾回收器Garbage Collector

本文深入探讨了Java虚拟机的内存区域,包括程序计数器、虚拟机栈、本地方法栈、Java堆和方法区。重点介绍了垃圾回收的基础,如引用计数和可达性分析算法,以及强软弱虚引用的概念。文章还详细阐述了几种垃圾收集算法,如标记-清楚、复制、标记整理和分代收集,并解释了它们的工作原理和应用场景。
摘要由CSDN通过智能技术生成

主要学习了《深入理解Java虚拟机:JVM高级特性与最佳实践》的第三章
本文简直就是读书笔记,求作者不要撕我

程序计数器(PC)、虚拟机栈(java)、本地方法栈(native)
线程私有,内存分配和回收具备确定性
e.g.栈帧Stack Frame进入和退出有条不紊,类结构确定下来时就已知内存

Java堆、方法区(逻辑堆)
线程共享,内存多样,运行时才可知
分配和回收是动态的,垃圾回收器关注的是这部分内存

1.对象已死吗
(原文标题不错就不改了)
1)引用计数算法Reference Counting
顾名思义,ref即为生命(被引用+1,失效-1)
简单,高效,but难以解决对象间相互引用的问题「死锁Dead Lock」

2)可达性分析算法Reachability Analysis
「路由Routing」「图论」「树」
这里写图片描述
GC Root(根),引用链Reference Chain(茎)
通过父节点指针上查,根不可达则out

3)强软弱虚引用
如何描述一些“食之无味,弃之可惜”的对象
强:Object obj = new Object(),never被回收
软:内存溢出异常前触发救场࿰

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值