程序计数器: 是一块较小的内存空间, 可以看作是当前线程所执行的字节码的行号指示器. 程序中的分支, 循环, 跳转, 异常处理, 线程恢复等基础功能都需要依赖这个计数器完成. 由于多线程是通过线程轮流切换并分配处理器执行时间的方式来实现的, 故该区域为线程私有的内存.
虚拟机栈: 描述的是 Java 方法执行的内存模型, 用于存储局部变量表, 操作数栈, 动态链接, 方法出口等
堆: 是 Java 虚拟机所管理的内存中最大的一块, Java 堆是被所有线程共享的一块内存区域, 在虚拟机启动时创建, 存放几乎所实例, 也是垃圾收集器管理的主要, 所以也被称为 "GC 堆"
方法区: 用于存放已被虚拟机加载的类信息, 常量, 静态变量, 即时编译后的代码
来源: http://www.bubuko.com/infodetail-2641388.html