JVM第一部分

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

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

JVM堆

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

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

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

jdk1.7和1.8堆的区别

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

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

什么是虚拟机栈

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

垃圾回收是否涉及栈内存

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

栈内存空间越大越好吗

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

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

形参也是一种局部变量

栈内存溢出情况

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

栈帧过大导致栈内存溢出

栈和堆的区别

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

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

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

相关推荐
Lhappy嘻嘻5 小时前
读懂 JVM:内存模型、类加载机制、分代回收
java·开发语言·jvm
CS创新实验室18 小时前
Python 对象“死“了之后去了哪?——引用计数与分代垃圾回收
开发语言·jvm·python
wuminyu21 小时前
JMM学习总结:深入理解happens-before关系
java·linux·c语言·jvm·c++
DongQiShanRen1 天前
六根硬件映射(下):物理闭环五步法,抽一条已实装的看
大数据·jvm·人工智能·算法·rust·哈希算法·集成学习
乌暮1 天前
从 `println` 到生产级日志:Spring Boot 日志体系完全指南
java·开发语言·jvm·spring boot·后端·学习·面试
Sayai1 天前
Java 进程 Unable to create new native thread 排查实战:Linux 线程数五层限制与 JVM -Xss 调优
java·linux·运维·jvm·性能优化
wuminyu1 天前
Continuation::freeze与thaw的x86_64汇编Stack Chunk拆解源码分析
java·linux·c语言·汇编·jvm·c++
金銀銅鐵2 天前
[Java] 借助GUI展示class文件的内容(v1.0版本)
jvm·后端·ai编程
kunicoding2 天前
多线程编程核心概念详解:从线程基础到并发安全
java·jvm·安全
云老大-阿里云国际站代理商2 天前
华为云国际站渠道代理商:CSS查询很慢但CPU不高?磁盘I/O、JVM与分片问题怎么排查
css·jvm·华为云