1.1.运行时数据区域
1.概述
JVM内存布局规定了java在运行过程中内存申请、分配、管理的策略,保证了java的高效稳定执行,不同的jvm对于内存的划分方式和管理机制存在着部分差异,经典的JVM布局如下:
虚拟机定义了若干程序运行期间使用到的数据区,其中有一些会随着虚拟机启动而创建,随着虚拟机退出而销毁(进程对应的区域)
另外一些和线程一一对应,会随着线程开始和结束而创建和销毁
灰色的是单独线程私有的,红色的是进程的,多个线程共享的
- 每个线程:独立包括程序计数器、栈、本地栈
- 线程间共享:堆、堆外内存(永久代或元空间、代码缓存)
每个Java应用程序都有一个Runtime
类的Runtime(单例)
,允许应用程序与运行应用程序的环境进行接口,runtime对象就相当于运行时数据区