JVM 内存划分简单说明

电脑的内存条由操作系统管理,JVM需要请求操作系统分配内存,JVM对分配的内存进行划分,分成了5个区域。

1PC寄存器(程序计数器):内存和CPU之间交互

2本地方法栈:虚拟机无法实现,调用操作系统中的功能。eg:window 复制,剪切...,利用这片内存实现。

3方法和数据的共享(方法区):运行时期 class文件进入的地方

4方法栈(java栈):所有的方法运行的时候,进入的内存。eg:mian运行,就会创建一个栈帧,进入方法栈

5堆:存储的容器和对象

我们主要关注3/4//5内存 ,举例main方法运行,内存的变化。

public static void main(String[] args){
    int [] arr = new int[3]
}

  程序运行,class进入内存的方法和数据的共享区域,然后main进入方法栈的(压栈运行)最底部区域,创建数组容器,JVM在堆内开辟空间存储数组容器(new int[3]),返回数组首地址给变量arr(引用类型),也可以说arr指向内存地址(I@766a24)。每次运行,内存地址可能是变化的,每次jvm开辟地址是不定的。

猜你喜欢

转载自blog.csdn.net/ido1ok/article/details/84297995