首页 > 编程语言 > 详细

Java内存区域

时间:2017-12-31 20:02:49      阅读:181      评论:0      收藏:0      [点我收藏+]

Java运行时数据区域

Java虚拟机所管理的内存包括以下几个运行时数据区域,如下图:
技术分享图片

程序计数器

  程序计数器(Program Counter Register)是一块较小的内存区域,是当前线程执行的字节码的行号指示器。程序计数器是一块私有的内存区域,每个线程都有一个独立的程序计数器。如果线程正在执行的是一个Java方法,这个程序计数器记录的是正在执行的虚拟机字节码指令地址;如果正在执行的是Native方法,这个计数器值则为空(Undefined)。程序计数器所在的内存区域是唯一一个在Java虚拟机没有OOM(OutOfMemoryError)情况的区域。

Java虚拟机栈

  Java虚拟机栈(Java Virtual Machine Stack)也是线程私有的,生命周期与线程同步。虚拟机栈描述的是Java方法执行的内存模型:每个方法执行的同时会创建一个栈帧用于存储局部变量表、操作数栈、动态链、方法出口等信息。每个方法从调用直至执行完成的过程,就对应着一个栈帧在虚拟机栈中入栈到出栈的过程。
  虚拟机栈内存区域会出现两种异常:
    1.当线程请求的栈深度大于虚拟机允许的深度,会抛出StackOverflowError异常;
    2.当改区域需要扩展时申请不到足够的内存,就会抛出OOM(OutOfMemoryErro)异常。

Java内存区域

原文:https://www.cnblogs.com/wolf-bin/p/8158707.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!