JVM的内存组成:
共享区和私有区
共享区分为:
堆:用于保存程序运行时的java变量、对象实例是垃圾回收的主要区域,不在引用的对象在堆被销毁
方法区:虚拟机中加载类的信息、常量、静态内容
私有区:
程序计数器PC:当前线程所执行的字节码指令的行号指示器例如:分支、跳转、循环、异常处理、线程恢复,在java多线程中是通过线程轮流切换分配时间片执行,为了线程切换能恢复正确位置,每个线程有单独程序计数器。当出现:分支、跳转、记录行号,利于线程恢复。
虚拟机栈:线程私有,为java的方法服务,当线程创建的时候,虚拟机栈会将线程分配内存区域。
本地方法栈:本地方法服务,操作系统内部。