码迷,mamicode.com
首页 > 编程语言 > 详细

Java内存区域

时间:2017-12-31 20:58:54      阅读:168      评论:0      收藏:0      [点我收藏+]

标签:virt   art   gpo   rtu   执行   计数器   over   信息   char   

Java运行时数据区域

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

程序计数器

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

Java虚拟机栈

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

Java内存区域

标签:virt   art   gpo   rtu   执行   计数器   over   信息   char   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!