JVM运行时数据区域(2)-创新互联

目录

10年积累的成都网站设计、做网站经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先做网站设计后付款的网站建设流程,更有开平免费网站建设让你可以放心的选择与我们合作。

一、程序计数器

二、虚拟机栈

三、本地方法栈

四、堆

五、方法区


java虚拟机运行时数据区域主要包含:

1.程序计数器

2.虚拟机栈

3.本地方法栈

4.方法区

5.堆

下图绿色部分的数据是所有线程共享的。

一、程序计数器

  a、是一块较小的内存空间,是当前线程执行的字节码指示器。

b、当前线程执行的是java方法,程序计数器记录正在执行的虚拟机字节码指令地址。

  c、若当前线程执行的是本地方法,程序计数器值为空。(undefined)。

  d、每条线程有独立的程序计数器,互补影响,独立存储。(线程私有)

  e、程序计数器不会发生OutOfMemoryError

二、虚拟机栈

 每个java方法在虚拟机栈中都是一个栈帧,方法从调用到执行完毕的过程对应栈帧在虚拟机栈中入栈,出栈的过程。

 a、 我们常说的栈指的就是虚拟机栈,精确一点就是指虚拟机栈中局部变量表部分。

  b、局部变量表存放了基本数据类型(boolean,byte,char,short,int,float,long,double);对象引用(指向对象起始地址的指针)

  虚拟机栈是线程私有的。

  c、当线程请求的栈深度大于虚拟机允许的深度,抛出StackOverFlowError。

  d、当虚拟机栈的深度可以动态扩展,扩展后还申请不到足够内存,抛出OutOfMemoryError。

三、本地方法栈

  a、与虚拟机栈类似,只不过本地方法栈执行的是native方法。(C语言写的)

  b、当线程请求的栈深度大于本地方法栈允许的深度,抛出StackOverFlowError。

  c、当本地方法栈的深度可以动态扩展,扩展后还申请不到足够内存,抛出OutOfMemoryError。

四、堆

  a、堆是虚拟机中内存大的。

  b、堆为所有的对象实例及数组分配内存。

  c、堆中没有足够的空间为实例分配内存时,将抛出OutOfMemoryError。

五、方法区

  a、存储已被虚拟机加载的类型信息,常量,静态变量,运行时常量池。

  b、方法区无法满足内存分配需求时,将抛出OutOfMemoryError。

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


网页名称:JVM运行时数据区域(2)-创新互联
标题URL:http://azwzsj.com/article/dgschs.html