天天看点

11张图让你吃透Java的内存模型!

1.内存模型 & 分区

Java虚拟机在运行Java程序时,在运行时数据区里,会根据用途进行划分:

11张图让你吃透Java的内存模型!
11张图让你吃透Java的内存模型!

下面详细介绍每个内存模型分区

2.Java堆

11张图让你吃透Java的内存模型!
11张图让你吃透Java的内存模型!

3. Java虚拟机栈

11张图让你吃透Java的内存模型!
11张图让你吃透Java的内存模型!

4. 本地方法栈

11张图让你吃透Java的内存模型!

简介:十分类似Java虚拟机栈,与Java虚拟机区别在于:服务对象,即Java虚拟机栈为执行 Java 方法服务;本地方法栈为执行 Native方法服务

5.方法区

11张图让你吃透Java的内存模型!
11张图让你吃透Java的内存模型!

注:其内部包含一个运行时常量池,具体介绍如下:

11张图让你吃透Java的内存模型!

6.程序计数器

11张图让你吃透Java的内存模型!
11张图让你吃透Java的内存模型!

7. 额外知识:直接内存

定义:NIO类中基于通道和缓冲区的I/O方式 ,是通过使用Native函数库直接分配的堆外内存,不受大小限制,不是虚拟机运行时数据区的一部分,并且不在堆中分配,适用于多次调用的情况,可以避免在 Java 堆和 Native堆之间来回复制数据,提高抛出的异常的使用性能,其他内存区域的总和也大于物理内存限制。

继续阅读