Java虚拟机内存的结构
Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域,如下图所示
程序计数器:一块较小的内存空间,可以看成是当前线程所执行的字节码的行号指示器。
Java虚拟机栈:也叫栈内存(Stack),是Java方法执行的内存模型,每个方法在执行的同时都会创建一个栈帧用于存储局部变量表、操作数栈、动态链接、方法出口等信息。
Java堆:是Java虚拟机所管理的内存中最大的一块,是被所有线程共享的一块内存区域,存放的是对象实例,Java堆是垃圾收集器管理的主要区域。
方法区:是各个线程共享的内存区域,存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。