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. 标签: 上海市虚拟机 上海市虚拟机厂家
上海市 上海市上海市虚拟机厂家
供应虚拟机Java 虚拟机的内存怎样分配
本文地址:https://www.zhuigan.cn/product/425538.html