JVM——JVM区域划分与GC

本文介绍了JVM的内存区域划分,包括程序计数器、虚拟机栈、本地方法栈、堆和方法区。重点讲解了GC(垃圾收集器)如何管理内存,主要通过可达性分析法确定对象是否存活。讨论了三种垃圾回收算法:标记-清除、标记-复制和标记-整理,分析了各自的优缺点。此外,还提及了引用的四种类型以及分代收集策略在新生代和老年代的应用。

一、JVM

1.区域划分

JVM在执行java程序时会把它所管理的内存划分为若干个不同的数据区域,这些区域各有各的用途。根据《Java虚拟规范》的规定,Java虚拟机所管理的内存会包含如下几个运行时数据区域。
在这里插入图片描述

2.JVM的工作

在这里插入图片描述

二、GC(垃圾收集器)

对于程序计数器、虚拟机栈、本地方法栈这三部分区域而言其生命周期与相关线程有关,随线程而生,随线程而灭。并且这三个区域的内存分配与回收具有确定性。 所以GC管理内存,主要管理堆上的内存,并且以对象为单位进行管理。 所以,GC对内存的回收问题就转换为GC回收"死去"的对象的问题。

1. 大部分JVM使用的是——可达性分析法管理内存

(※)GC root:必须存活的对象,且GC root指向的对象一定存活。在JVM中,在某一时刻,栈中存在的局部变量、静态属性、常量池中引用指向的对象称为GC root,GC root还有其他。

2. 引用

Java中引用的定义很传统 : 如果引用类型的数据中存储的数值代表的是另一块内存的起始地址,就
称这块内存代表着一个引用。这种定义有些狭隘,一个对象在这种定义下只有被引用或者没有被引用两种状态。
结合可达性分析法,某些

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值