[[320318]]
1关节计数器
一块较小的内存空间。 面前哨程所延迟的字节码的行号带领器。2虚构机栈
描画的是Java秩序延迟的线程内存模子:每个秩序被延迟的时辰,Java虚构机王人会同步创建一个栈(StackFrame)用于存储局部变量表、操作数栈、 动态流畅、秩序出口等信息。每一个秩序被调用直至延迟已毕的流程,就对应着一个栈帧在虚构机栈中从入栈到出栈的流程。
局部变量表(存放)
基本数据类型 对象援用 returnAddress类型(指向了一条字节码提醒的地址)绝顶
StackOverflowError:线程请求的栈深度大于虚构机所允许的深度
OutOfMemoryError:栈扩展时无法肯求到饱胀的内存
3土产货秩序栈
虚构机使用到的土产货(Native)秩序就业。
4Java堆回收内存的角度
更生代、老年代、耐久代、Eden空间、From Survivor空间、To Survivor空间。
分拨内存的角度
总共线程分享的Java堆中不错鉴识出多个线程特有的分拨缓冲区(Thread Local Allocation Buffer,TLAB)。
绝顶
OutOfMemoryError:莫得内存完成实例分拨, 况且堆也无法再扩展时
5秩序区
各个线程分享的内存区域 用于存储已被虚构机加载的类型信息、常量、静态变量、即时编译器编译后的代码缓存等数据 JDK8将耐久代扬弃,相应的用元空间MetaSpace绝顶
OutOfMemoryError:无法称心新的内存分拨需求时
6出手频频量池
秩序区的一部分 用于存放编译期生成的各式字面量与象征援用, 这部老实容将在类加载后存放到秩序区的出手频频量池中绝顶
OutOfMemoryError:当常量池无法再肯求到内存
7成功内存
不是虚构机出手时数据区的一部分
本机成功内存的分拨不会受到Java堆大小的戒指 中国
回想:
JVM内存区域结构包含:关节计数器、虚构机栈、土产货秩序栈、Java堆、秩序区。不错简记为:一计两栈一堆一区,绵薄顾虑。
秩序区包含出手频频量池,还有成功内存(NIO更常见)。
需要了解到每个区域是主要作用是什么,这么才能愈加安定的掌捏。