JVM第一部分

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

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

JVM堆

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

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

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

jdk1.7和1.8堆的区别

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

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

什么是虚拟机栈

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

垃圾回收是否涉及栈内存

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

栈内存空间越大越好吗

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

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

形参也是一种局部变量

栈内存溢出情况

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

栈帧过大导致栈内存溢出

栈和堆的区别

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

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

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

相关推荐
落魄大学生之流水线上谋生计16 小时前
JVM程序计数器详解
jvm
嘻哈baby1 天前
Go 函数中的参数为什么不支持默认值?
java·开发语言·jvm
wuminyu1 天前
Linux内核线程调度与虚拟线程调度机制系统级深度剖析
java·linux·c语言·jvm·c++
hfywmsj2 天前
广州餐饮铺位招租的选址架构:流量入口与成本函数分析
java·大数据·jvm·广州餐饮铺位招租
Tingjct2 天前
线程详细讲解---聚焦linux
linux·服务器·jvm
myy-learn2 天前
32 SQLITE数据库
jvm·数据库·sqlite
wuminyu3 天前
JVM锁膨胀与Futex源码解析
java·linux·c语言·jvm·c++
郝学胜-神的一滴3 天前
C++11 工程级应用 08:Lambda表达式与Tuple元组
开发语言·jvm·c++·python·程序人生·开源
袋鼠云数栈3 天前
整库迁移与分库分表同步:批量数据搬迁的配置简化思路
jvm·数据库·oracle
Mr. zhihao3 天前
JVM 偏向锁 4 秒延迟:从源码动机到 JEP-374 废弃全链路
jvm·并发·偏向锁