Java内存结构

Java中的内存可划分为五个模块:

①栈(Stack):
保存的是一块堆内存的空间地址,每一块栈内存只能够保留一块堆内存地址。方法的运行一定要在栈当中运行。

局部变量:方法的参数,或者是方法{}内部的变量。

作用域:一旦超出作用域,立刻从栈内存当中消失。

②堆(Heap):
保存每一个对象的属性内容,即对象的真正数据。堆内存需要用关键字new才可以开辟。堆内存都有地址值:16进制。

堆内存数据默认值:

整数:0
浮点:0.0
字符:’\u0000’
布尔:false
引用类型:null

③方法区(Method Area):
存储.class相关信息,包含方法的信息。

方法区是各个线程共享的内存区域,在JVM启动的时候被创建,其实际的物理内存空间是不连续的,其大小可以选择固定大小或者可扩展,这同时决定了系统可以保存多少个类,关闭JVM就会释放这个区域的内存。

④本地方法栈(Native Method Stack):
与操作系统相关,用于管理本地方法的调用,线程私有,允许被实现成固定或者是可动态扩展的内存大小。

⑤寄存器(pc Register):
与CPU相关,共有四个寄存器

程序记数寄存器:跟踪程序执行的准确位置

堆栈指针寄存器:指示操作栈项

框架寄存器:指向当前执行的环境

变量寄存器:指向当前执行环境中第一个本地变量

你可能感兴趣的:(java,jvm,开发语言)