JVM第一部分

PC寄存器:存储的是数字 0, 3, 6, 10, 17 这样的字节码偏移量。

LineNumberTable:是一个映射表,它将上述的偏移量"翻译"成我们程序员能看懂的源代码行号。

JVM堆

JVM堆由两部分组成:年轻代+老年代

年轻代包括三部分:eden区,s0,s1 s0+s1被称作幸存者区

老年代主要保存生命周期长的对象

jdk1.7和1.8堆的区别

1.7的堆中有一个区域是永久代,用来存放类信息,静态变量,常量,编译后的代码

1.8移除了永久代,把数据存储到本地内存的元空间中,防止内存溢出。

什么是虚拟机栈

线程运行时需要的内存称为虚拟机栈

垃圾回收是否涉及栈内存

不涉及,垃圾回收主要是用来回收堆内存

栈内存空间越大越好吗

未必,栈内存大了会导致能活动的线程数变少

方法内的局部变量是否安全

形参也是一种局部变量

栈内存溢出情况

栈帧过多导致栈内存溢出 例如递归

栈帧过大导致栈内存溢出

栈和堆的区别

栈主要是用来存放局部变量和方法调用,堆主要是用来存储java对象和数组的。

堆中有垃圾回收机制,而栈没有。

栈是线程私有的,堆是线程共有的。

相关推荐
明湖起风了3 分钟前
mqtt消费堆积
java·jvm·windows
Free Tester21 分钟前
如何判断 LeakCanary 报告的严重程度
java·jvm·算法
wgzrmlrm746 小时前
如何解决ORA-28040没有匹配的验证协议_sqlnet.ora版本兼容设置
jvm·数据库·python
wgzrmlrm749 小时前
如何从SQL中提取年份或月份:EXTRACT与日期函数用法
jvm·数据库·python
ruan11451412 小时前
关于HashMap--个人学习记录
java·jvm·servlet
__土块__1 天前
大厂后端一面模拟:从线程安全到分布式缓存的连环追问
jvm·redis·mysql·spring·java面试·concurrenthashmap·大厂后端
fly spider1 天前
一文概括 JVM 核心内容
jvm
brahmsjiang1 天前
Java类加载机制解析:从JVM启动到双亲委派,再到Android的特殊实现
android·java·jvm
cch89182 天前
C++、Python与汇编语言终极对比
java·开发语言·jvm
zshs0002 天前
从 HashMap 到基因法:同一套位运算思想,如何从 JVM 走到分布式数据库
jvm·数据库·分布式