JVM(二)

2021-02-24  本文已影响0人  _一叶孤帆

本地方法栈

本地方法栈保存的是 native 方法的信息。

当一个 JVM 创建的线程调用 native 方法后,JVM 不再为其在虚拟机栈中创建栈帧,JVM 只是简单的动态链接并直接调用 native 方法

线程共享区域

方法区

<= JDK 1.7 永久代
>= JDK 1.8 元空间  (使用的是堆外内存或者叫机器内存,不受限于堆内存,方便拓展,但是会挤压堆空间)

这部分内容是比较难回收的。

Java 堆

堆中的数据是需要频繁回收的。

所以分成了两部分来进行分离

Java 堆参数大小设置

-Xmx 堆区内存可分配最大上限
-Xms 堆区内存可分配最小下限

直接内存(堆外内存)

image.png

不受限于对大小限制,但受到本机总内存限制。会出现 oom 异常。

运行时数据区

  1. 申请内存
  2. 类加载 -> class 进入方法区
  3. 类中的常量、静态变量进入方法区
  4. 虚拟机栈入栈帧
  5. 对象引用入局部变量表
  6. GC

HSDB (内存可视化工具)

window

内存溢出

上一篇 下一篇

猜你喜欢

热点阅读