运行时数据区
Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域
- 程序计数器
- Java虚拟机栈
- 本地方法栈
- Java堆
- 方法区
如下图,该图5个区域就是上面描述的数据区域
这些区域有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而一直存在,有些区域则是依赖用户线程的启动和结束而建立和销毁。
其中,这5个内存区域中,可以再进行细分
线程私有
顾名思义,就是线程私有的内存区域
- 程序计数器
- Java虚拟机栈
- 本地方法栈
线程共有
顾名思义,线程共用的内存区域
- Java堆
- 方法区
那么他们的生命周期就很好划分了
属于线程私有的内存区域,它的生命周期肯定不会比当前线程的生命周期长,即这些线程私有的内存区域会随着线程的创建而创建、销毁也是同理的
而线程共有的内存区域,它的生命周期则是与jvm有关,在jvm启动的时候创建,关闭的时候销毁
参考资料
《深入理解Java虚拟机虚拟机》第三版 周志明 著