天天看点

jvm内存结构(1),Java高级开发面试

特点:

线程私有

、线程请求的栈深度超过虚拟机运行的深度,将会抛出

StackOverflowError异常

本地方法栈

介绍:

  1. Hot-Spot虚拟机直接将

    本地方法栈

    虚拟机栈

    合二为一。

特点:

线程私有

,在栈深度扩展失败时也会抛出

StackOverflowError

异常

java堆

介绍:

  1. 《java虚拟机规范中》堆描述:

    所有的对象实例以及数组都应当在堆上分配

  2. java堆是

    垃圾收集管理

    的内存区域,也可以称作

    GC堆

  3. 堆可以处于

    物理上不连续的内存空间中

    ,但在逻辑上应该被视为连续的,但是对于

    大对象

    数组

    ,很可能会要求连续的内存空间

特点:

线程共享

,堆内存不够时会抛出

OutOfMemoryError

异常

方法区

介绍:

  1. 储存

    已被虚拟机加载的类型信息

    常量

    静态变量

    即时编译器编译后的代码缓存

  2. jdk8以前Hot-Spot方法区的实现称为

    永久代

    ,是

    堆内存

    的一部分
  3. jdk9以后Hot-Spoy方法区的实现称为

    元空间

    ,使用的是

    直接内存

特点:

线程共享

、无法满足新的分配需求时会抛出

OutOfMemoryError

异常

运行时常量池

介绍:

  1. 方法区的一部分

    ,Class文件中除了有类的

    版本

    字段

    方法

    接口

    等描述信息外,还有一个是

    常量池表

    ,用于存放编译器生成的各种

    字面量

    符号引用

    ,这部分内容会在

    类加载后

    放入

    运行时常量池

  2. 一般会把

    符号引用

    翻译成

    直接引用

    再放入

    运行时常量池

  3. 运行时常量池具有

    动态性

    ,并非只有编译期间才能产生

    常量

    ,运行时也可以将

    常量

    放入池中,比如

    String的intern()

    方法

特点:无法申请内存时抛出

OutOfMemoryError

异常

直接内存

直接内存并不是虚拟机运行时的内存区域

介绍:

最后

经过日积月累, 以下是小编归纳整理的深入了解Java虚拟机文档,希望可以帮助大家过关斩将顺利通过面试。

由于整个文档比较全面,内容比较多,篇幅不允许,下面以截图方式展示 。如有需要获取资料文档的朋友,可以点击这里免费获取

jvm内存结构(1),Java高级开发面试
jvm内存结构(1),Java高级开发面试
jvm内存结构(1),Java高级开发面试
jvm内存结构(1),Java高级开发面试
jvm内存结构(1),Java高级开发面试
jvm内存结构(1),Java高级开发面试
jvm内存结构(1),Java高级开发面试

.(img-FjCVtRiR-1628583368457)]

[外链图片转存中…(img-BG8cwaTF-1628583368459)]

[外链图片转存中…(img-maOktgUB-1628583368460)]

由于篇幅限制,文档的详解资料太全面,细节内容太多,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!