Java内存区域:
Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有的则依赖用户线程。
运行时区域
1.程序计数器
记录当前线程所执行的字节码的指示器。为线程私有的
2.虚拟机栈
储存局部变量、操作数栈、动态链接、方法出口等信息.为线程私有的
3.本地方法栈
与虚拟机栈所发挥的作用相似,区别在于虚拟机栈为虚拟机执行Java方法服务,本地方法栈为虚拟机使用的Native方法服务。为线程私有的
4.Java堆
Java虚拟机所管理的内存中最大的一块,用来存放对象实例。是所有线程共享的
Java堆是垃圾收集器管理的主要区域,也被成为GC堆
5.方法区
用于储存已被虚拟机加载的类信息、常亮、静态变量、即时编译器编译后的代码等数据。也是线程共享的