JVM详解(一)

一、组成部分
1.类加载器
2.执行引擎(解释直接字节码)
3.动态内存管理器
二、JVM内存区域划分
JVM在启动之后会从操作系统申请一大块内存,再针对这个内存划分出一些区域
1.堆(运行性常量池)
new 的对象放在堆上(成员变量),1.8开始运行时常量池放在堆中
2.方法区
加载好的类放在方法区,静态成员
3.栈(JVM栈和本地方法栈)
局部变量
4.程序计数器
存的地址,描述当前线程接下来执行的指令在内存的哪个地方
一个Java进程中,可能包含着多个线程,多个线程之间,共用同一份堆和方法区,但是每个线程有自己的栈和程序计数器。
每个进程有自己的堆,多个进程不公相堆
三、GC都回收哪些?
1.堆:主要回收
2.方法区:GC是回收方法区的,但方法区空间小,数据失去作用概率低(比如房间已经很干净了,但是还要打扫就打扫不出来多少脏东西)
3.栈:不需要回收,栈上的内存何时释放,时机是明确的(线程结束,栈上内存就会释放,栈帧销毁(方法执行完)对应的局部变量被释放)
4.程序计数器:只保存地址,无需回收
四、回收过程
1.回收的基本单位
内存的单位是“字节”, 回收是按照对象的方式回收的
2.回收的基本思路
(1)标记:找出当前对象到底是否需要回收
(2)回收:把“死了”的对象回收回去
(a)引用计数法
记录当前对象,是否被引用指向
(b)可达性分析
需要“图”这样的数据结构遍历图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值