厂商 :上海快网网络信息技术有限公司
上海 上海- 主营产品:
联系电话 :18827252893
商品详细描述
Java虚拟机内存分为五个区域: 办法区,堆, 虚拟机栈,本地办法栈,程序计数器。其间办法区和堆是java虚拟机同享的内存区域,虚拟机栈,本地办法栈,程序计数器是线程私有的。
1.程序计数器:
当时线程履行字节码的行号指示器。经过改变这个指示器的值来选择下一条需求履行的字节码指令。这个内存区域是Java虚拟机仅有一个没有定义OutOfMemeryError状况的区域。
2. Java虚拟机栈:
虚拟机栈描绘的是Java办法履行的内存模型:每个办法履行是都会创立栈帧(Stack Frame)用于存储局部变量,操作栈,办法信息,动态连接,办法出口等信息。
在java虚拟机标准中,关于这两个区域规定了两种状况的反常:
1)假如线程恳求的栈深度大于虚拟机所答应的深度将会抛出StackOverFlowError反常,
2)Java虚拟机能够动态扩展,当无法申请到满意的内存时会抛出OutOfMemeryError
3.本地办法栈
本地办法栈与Java虚拟机栈十分类似,其区别是Java虚拟机栈为虚拟机履行Java办法服务,而本地办法栈是虚拟机使用到的Native办法服务。 所以本地办法栈也也许呈现两种与Java虚拟机栈相同的反常。
4. Java堆
Java堆是Java虚拟机办理的最大的一块内存区域,java堆是被一切Java线程同享的,在Java虚拟机启动时创立,此内存的仅有意图即是寄存目标实例。简直一切的目标实例都要分配在堆中。(跟着JIT编译器的发展,逃逸剖析技能的逐渐老练,栈上分配,标量替换等优化技能,使得部分目标不再分配在堆上。)
Java堆的巨细经过 -Xmx和-Xms两个参数控制。但是当堆的内存再无法扩展时,就会呈现OutOfMemeryError.
5.办法区
办法区与Java堆相同,是各个线程同享的内存区域,他用于存储类信息,常量,静态变量以及及时编译后的代码等数据。当办法区无法满意内存分配需求时,将抛出OutOfMemeryError.
标签:
相关产品推荐