Java虚拟机运行时的数据区域
1.堆区(Heap)
(1)Heap是被所用线程共享的区域,是虚拟机中内存最大的一块。
(2)它的唯一目的就是存放对象的实例。
例如:A a=new A(100);
存放在堆中的是A(100)这个new出来的对象信息,而不是a这个对象引用
(3)它也是GC垃圾回收的主要区域,主要用分代收集算法
2.栈区(VM Stack)
(1)每个线程包含一个栈区,不被共享
(2)方法执行时存储基本类型变量区、执行环境上下文、操作指令区
例如上面的对象引用a
3.方法区
(1)是各个线程共享的区域
(2)存储类(class)信息、静态数据(static)、常量(final)以及编译后的代码数据