JVM相关

本文是关于网易云课堂上《带你重新认识JVM》的简单笔记。
Java代码执行流程如下图:
在这里插入图片描述

方法区:包含类信息,常量,静态变量JIT编译后的代码,存在垃圾回收机制,回收效率低,可能存在OOM。
堆内存:存放对象实例,几乎所有对象和数组。

Java对象在内存中的布局:
在这里插入图片描述
1.在堆中存对象,存的是啥?
局部变量存在栈,对象字段存在于堆中
Teacher james = new Teacher();
jame.stu = new Student();
james存在于栈,而 jame.stu存在于堆中,如上图

2.堆内存中对象如何被回收
a.引用计数器法,缺陷:相互应用的情况
b.可达性分析算法,可达GC Roots
GC Roots:虚拟机栈,方法中静态熟悉引用对象(存在方法区),方法中常量引用对象,Native方法应用对象

虚拟机栈:线程中方法执行的模型,每个方法执行时,就会在虚拟机栈中新建一个栈帧,
方法从调用到执行的过程,对应着栈帧在虚拟机中入栈和出栈的过程,先进后出。
栈帧就是虚拟机栈中的一个元素,代表着一个方法的调用,比如main方法调用就相当一个栈帧。
栈帧中动态引用:共享区中对方法区中的引用
栈帧包含:本地变量表,操作数栈和其他栈信息,本地变量表用于代表变量,用于存放变量数据,操作数栈用于存放临时变量,用于存放目前需要操作的变量
线程是什么?代码流
程序计数器,用于记录CPU执行到代码哪个部分,方便多线程切换

Java类文件结构
Class文件结构,《深入理解Java虚拟机》第六章

Todo:
回收机制深入理解
《深入理解Java虚拟机》 学习

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值