Java 虚拟机在执行 Java 程序的过程中会把它所管理的内存划分为若干个不同的数据区域。
    这些区域有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而一直存在,有些区域则是依赖用户线程的启动和结束而建立和销毁。

    JDK 1.8 之前:

    JVM运行时数据区域.png
    JDK 1.8 :

    2019-3Java运行时数据区域JDK1.8.png

    线程私有的:

    • 程序计数器
    • 虚拟机栈
    • 本地方法栈

    线程共享的:

    • 方法区
    • 直接内存 (非运行时数据区的一部分)