java虚拟机在运行java程序时,划分的数据区域有:
1、程序计数器:当前线程所执行的字节码的行号指示器。它是私有的,各个线程存在一个独立的程序计数器,线程之间的计数器互不影响,独立存储。
2、java虚拟机栈:它的生命周期和线程一样(每个线程一个栈,每个线程里的每个方法创建一个栈帧)。
局部变量表:存放了各种基本数据类型、引用类型。long/double 占两个局部变量空间,其他的数据占一个
3、本地方法栈:和虚拟机栈非常类似,本地方法栈是为虚拟机使用到的native方法服务
4、java堆:是虚拟机最大的一块内存,是被所有线程共享的一块线程,是在虚拟机启动时创建的,此内存区域唯一目的就是存放对象的实例。并且,堆是垃圾收集器主要管理的一块区域,现在垃圾收集器的基本算法是分代收集算法(分为新生代和老年代,永久代)