堆、栈、方法区
1,首先了解下java中的数据类型。
①java中的八大基本数据类型:boolean, char , byte, short, int, long , float , double.
②除了基本数据类型外还有引用数据类型:类,接口,数组。
这些可以去了解,主要想记录下堆、栈和方法区的理解。
2,java中的JVM内存可分为三个区:堆(heap)、堆栈(stack)、方法区(Method)。
①堆区
㈠,提供所有类的实例和数组对象存储区域
㈡,jvm只有一个堆区(heap)被所有线程共享,堆中不存放基本类型和对象引用,只存放对象本身
②栈区
㈠,每个线程包含一个栈区,栈中只保存基本数据类型的对象和自定义对象的引用(不是对象),对象都存放在堆区中
㈡,每个栈中的数据(原始类型和对象引用)都是私有的,其他栈不能访问。
③方法区
㈠,方法区又叫静态区,跟堆一样,被所有的线程共享。方法区包含所有的class和static变量。
㈡,方法区中包含的都是在整个程序中永远唯一的元素,如class,static变量。
㈢,运行时常量池都分配在 Java 虚拟机的方法区之中
3,举个例子
public void test(){
Test t = new Test();
int a = 1;
} public class Test{ } //t是Test对象的引用所以放在栈中,Test是自定义对象所以放在堆中. //a是基础数据类型所以在栈中.
小结:给大家分享下,感觉挺能理解进去的,错误地方请谅解,来个大牛指导下。