本文成文参考了《深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)》和《Java虚拟机规范(Java SE 8版)》,这是两本难得的好书,推荐大家购买实体书籍,后续会考虑在"借书下饭"栏目下开设子专栏,如果需要电子版尝鲜可以关注后私信我。
一、JVM内存区域
Java程序在运行时,首先要读取编译后的class文件,由于我们在编写源码时会定义和使用各种结构和对象,那么在进行加载时,JVM会将分配得到的内存划分为多个区域。通常我们会粗浅地将内存划分为“栈”和"堆"两个区域,但是对于Java虚拟机来说我们应该进一步剖析。