一张图了解JVM运行时内存数据区

关于JVM运行时内存数据区,结合自己的学习经验整理了一张图,在这里分享给大家
(可放大)

在这里插入图片描述

解读:在JVM运行时内存区域中,可以按线程共享线程独立来区分不同的区域

其中我们常说的就是线程共享的,它主要用来存放对象实例和数组,我们创建好的对象的引用就指向这里,是JVM管理内存中最大的一块,也是JVM回收的主要区域;

还有一个线程共享的区域是方法区,实质上方法区也是堆的一个逻辑部分,它主要用来存储类信息、常量、静态变量等,在方法区中,还有一个运行时常量池,字符串常量一般存放在常量池中(String s=“abc”)

而线程独立的区域有程序计数器区域,这里主要记录当前线程的字节码指令地址。

另一个线程独立的区域是,我们一般说的栈大多指的是虚拟机栈它是Java方法执行的一个内存模型,每个方法对应一个栈桢,栈桢中保存了这个方法中的局部变量变表(方法中的引用地址保存在这里),操作数栈,动态链接,方法出口等,方法的调用、销毁过程也就对应了栈桢入栈出栈的过程。本地方法栈的作用和虚拟机栈差不多,只是它执行的是Native方法。

是它执行的是Native方法。

此外,JVM还需要管理非JVM运行时数据区的 直接内存,在 JDK 1.4 中新加入 NIO (New Input/Output) 类,引入了一种基于通道(Channel)和缓存(Buffer)的 I/O 方式,它可以使用 Native 函数库直接分配堆外内存,然后通过一个存储在 Java 堆中的 DirectByteBuffer 对象作为这块内存的引用进行操作。可以避免在 Java 堆和 Native 堆中来回的数据耗时操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值