Java虚拟机-内存区域

          JVM虚拟机内存区域主要包含以下几块:方法区、虚拟机栈、本地方法栈、堆、程序计数器。

1. 方法区

        用于存储系统加载的类、方法、常量、静态变量等数据。该区域还包含常量池。

2.程序计数器

        程序计数器是用于记录当前线程执行的代码行号,所以程序计数器的每个线程私有的。当程序执行Java代码时,代表着当前字节码的行号,当执行Native方法是则为空。

3.Java虚拟机栈

        虚拟机栈是用于记录线程方法执行的内存模型。每个方法执行的时候会创建一个栈帧,用于存储局部变量、执行方法等信息。

4.本地方法栈

       用于描述Native方法执行过程的内存模型。

5.Java堆

       线程共享的用于存放对象的内存区域,由于现在收集器都是采用分代收集算法,所以堆内存还分为新生代区、老年代区。

6.直接内存

      直接内存不属于JVM虚拟机内存的一部分,它不受Java堆大小限制。它主要应用的场景是NIO部分。可以使用ByteBuffer.allocateDirect(1024)来创建直接内存,该部分内存不在Java堆中。如果使用ByteBuffer.allocate(1024)来创建的缓冲区则属于Java堆中的内存。

在使用直接内存创建缓冲区,使用JConsole进行监控,其堆内存几乎没什么变化

扫描二维码关注公众号,回复: 2452499 查看本文章

使用直接内存创建缓冲区

猜你喜欢

转载自blog.csdn.net/xuejike/article/details/81272676