特点:
线程私有
、线程请求的栈深度超过虚拟机运行的深度,将会抛出
StackOverflowError异常
本地方法栈
介绍:
- Hot-Spot虚拟机直接将
和本地方法栈
合二为一。虚拟机栈
特点:
线程私有
,在栈深度扩展失败时也会抛出
StackOverflowError
异常
java堆
介绍:
- 《java虚拟机规范中》堆描述:
所有的对象实例以及数组都应当在堆上分配
- java堆是
的内存区域,也可以称作垃圾收集管理
GC堆
- 堆可以处于
,但在逻辑上应该被视为连续的,但是对于物理上不连续的内存空间中
、大对象
,很可能会要求连续的内存空间数组
特点:
线程共享
,堆内存不够时会抛出
OutOfMemoryError
异常
方法区
介绍:
- 储存
、已被虚拟机加载的类型信息
、常量
、静态变量
即时编译器编译后的代码缓存
- jdk8以前Hot-Spot方法区的实现称为
,是永久代
的一部分堆内存
- jdk9以后Hot-Spoy方法区的实现称为
,使用的是元空间
直接内存
特点:
线程共享
、无法满足新的分配需求时会抛出
OutOfMemoryError
异常
运行时常量池
介绍:
- 是
,Class文件中除了有类的方法区的一部分
、版本
、字段
、方法
等描述信息外,还有一个是接口
,用于存放编译器生成的各种常量池表
和字面量
,这部分内容会在符号引用
放入类加载后
运行时常量池
- 一般会把
翻译成符号引用
再放入直接引用
运行时常量池
- 运行时常量池具有
,并非只有编译期间才能产生动态性
,运行时也可以将常量
放入池中,比如常量
方法String的intern()
特点:无法申请内存时抛出
OutOfMemoryError
异常
直接内存
直接内存并不是虚拟机运行时的内存区域
介绍:
最后
经过日积月累, 以下是小编归纳整理的深入了解Java虚拟机文档,希望可以帮助大家过关斩将顺利通过面试。
由于整个文档比较全面,内容比较多,篇幅不允许,下面以截图方式展示 。如有需要获取资料文档的朋友,可以点击这里免费获取
.(img-FjCVtRiR-1628583368457)]
[外链图片转存中…(img-BG8cwaTF-1628583368459)]
[外链图片转存中…(img-maOktgUB-1628583368460)]
由于篇幅限制,文档的详解资料太全面,细节内容太多,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!