JVM内存解析
运行时数据区由.class文件到.java文件的加载内存JVM解析虚拟机栈,平时提到的栈结构,局部变量(声明在方法内,形参,代码块内,构造器形参,构造器内部变量)存在栈结构,局部变量指的是函数内部的变量。方法内的变量都是局部变量。先进后出
堆:new出来的结构加载在堆空间,数组,String,非static属性,先进先出。
方法区:类的加载信息(类的方法,类的代码块),常量池(常量),静态域(静态变量)。
堆 Heap 此内存区域的唯一目的就是 存放对象实例 几乎所有的对象实例都在这里分配内存 。 这一点在Java 虚拟机规范中的描述是:所有的对象实例以及数组都要在堆上分配 。
栈 Stack 是指虚拟机栈 。 虚拟机栈用于 存储 局部变量 等 。
局部变量表存放了编译期可知长度的各种基本数据类型 boolean 、 byte 、char 、 short 、 int 、 float 、 long 、
double 、 对象引用 reference 类型它不等同于对象本身 是对象在堆内存的首地址 。 方法执行完 自动释放 。
方法区 Method Area 用于 存储已被虚拟机加载的 类信息 、 常量 、 静态变量 、 即时编译器编译后的代码 等数据 。
变量定义和声明:定义为对象分配了内存;声明没有;类似于一个初始化,一个只说了类型没有赋值;