JVM内存分为3个区:堆(heap)、栈(stack)、方法区(method)
1.堆(heap):存储的全部对象,每个对象有个与之对应的class信息。即通过new关键字和构造器创建的对象。JVM只有一个堆被所有线程共享。堆是垃圾收集管理的主要区域。
2.栈(stack):每个线程包含一个栈区,栈中只保存基本数据类型和自定义对象的引用。每个栈中的数据都是私有的,其他栈不能访问。栈又分为3个区:基本类 型变量区、执行环境上下文、操作指令区。
3.方法区(method):方法区又叫做静态区。和堆一样被所有线程共享。方法区中包含的都是在整个程序中永远唯一的元素,如:class,static变量。常量池是 方法区的一部分。