JVM运行时数据区域解析
所有线程共享数据区
线程隔离数据区
- 当前线程所执行的字节码行号指示器
 - 字节码解释器工作依赖计数器控制完成
 - 通过执行线程行号记录,让线程轮流切换各条线程之间计数器互不影响
 - 线程私有,生命周期与线程相同,随JVM启动而生,JVM关闭而死
 - 线程执行Java方法时,记录其正在执行的虚拟机字节码指令地址
 - 线程执行Nativan方法时,计数器记录为空(Undefined)
 - 唯一在Java虚拟机规范中没有规定任何OutOfMemoryError情况区域
 
- 线程私有,生命周期与线程相同
 - 用于存储局部变量、操作栈、动态链接、方法出口
 - 每一个方法被调用直至执行完成的过程,就对应着一个栈帧在虚拟机栈中从入栈到出栈的过程
 
在Java虚拟机规范中,对于此区域规定了两种异常状况:
如果线程请求的栈深度大于虚拟机所允许的深度,将抛出StackOverflowError异常;
如果虚拟机栈可以动态扩展,当扩展时无法申请到足够的内存时会抛出OutOfMemoryError异常。
- Java堆(java heap)是Java虚拟机所管理的内存中最大的一块
 - 它是被所有线程共享的一块内存区域,在虚拟机启动时创建
 - The heap is the runtime data area from which memory for all class instances and arrays is allocated.
 
JVM运行时数据区域解析的更多相关文章
- JVM运行时数据区域
		
上面已经聊过JVM是什么东东,也谈过了JVM内存的垃圾回收机制.这一篇博客我们来聊聊JVM运行时数据区域. JVM运行时数据区域由5块部分组成,分别是堆,方法区,栈,本地方法栈,以及程序计数器组成. ...
 - 深入理解Java虚拟机 -- 读书笔记(1):JVM运行时数据区域
		
深入理解Java虚拟机 -- 读书笔记:JVM运行时数据区域 本文转载:http://blog.csdn.net/jubincn/article/details/8607790 本系列为<深入理 ...
 - JVM 运行时数据区域划分
		
目录 前言 什么是JVM JRE/JDK/JVM是什么关系 JVM执行程序的过程 JVM的生命周期 JVM垃圾回收 JVM的内存区域划分 一.运行时数据区包括哪几部分? 二.运行时数据区的每部分到底存 ...
 - [jvm]运行时数据区域详解
		
了解虚拟机是怎么使用内存的,有助于我们解决和排查内存泄漏和溢出方面的问题.详解java虚拟机内存的各个区域,分析这些区域的作用服务对象以及可能发生的问题. 一.运行时数据区域 java虚拟机在执行ja ...
 - 深入理解Java虚拟机-JVM运行时数据区域
		
一.运行时数据区域 1.程序计数器 程序计数器( Program Counter Register) 是一块较小的内存空间, 它可以看作是当前线程所执行的字节码的行号指示器. Java虚拟机的多线程是 ...
 - JVM运行时数据区域详解
		
参考文章: <Java Se11 虚拟机规范> <深入理解Java虚拟机-JVM高级特性与最佳实践 第3版>- 周志明 本文基于Java Se 11讲解. 根据<Java ...
 - JVM 运行时数据区域
		
Java虚拟机管理的内存包括以下几个运行时数据区域: 1.程序计数器: 程序计数器是一块比较小的内存空间,是当前线程执行的字节码行号指示器.Java多线程是通过线程轮流切换来实现的,所以每个线程都有一 ...
 - 轻松认识JVM运行时数据区域(使用思维导图)
		
下面是个人阅读周志明编写的深入浅出Java虚拟机做成思维导图的笔记,线条.颜色和图片的视觉印象比起单纯文字笔记好得太多了,文字笔记的枯燥以及硬性记忆我就不再多说,特别对于JVM这块略微有点枯燥的知识, ...
 - Java虚拟机 - 结构原理与运行时数据区域
		
http://liuwangshu.cn/java/jvm/1-runtime-data-area.html 前言 本来计划要写Android内存优化的,觉得有必要在此之前介绍一下Java虚拟机的相关 ...
 
随机推荐
- mui-当使用addeleventlisener()方法绑定事件时选择器无法绑定事件
			
在mui中绑定事件不能用jQuery或mui(“#XX”)的形式选取某个元素,而是document.getelementbyid()的形式 mui(“#XX”)可以使用on方法绑定事件
 - Genomic signatures of evolutionary transitions from  solitary to group living(独居到社会性的转变)
			
1.摘要 群居性的进化是进化的主要过渡之一,但其背后的基因组变化是未知的.我们比较了10种蜜蜂的基因组,它们的社会复杂性各不相同,代表了社会进化中的多种独立过渡,并报告了三项主要发现. 第一,许多重要 ...
 - 大型运输行业实战_day12_1_权限管理实现
			
1.业务分析 权限说的是不同的用户对同一个系统有不同访问权限,其设计的本质是:给先给用户分配好URL,然后在访问的时候判断该用户是否有当前访问的URL. 2.实现 2.1数据库设计标准5表权限结构 2 ...
 - Java:类加载机制及反射
			
一.Java类加载机制 1.概述 Class文件由类装载器装载后,在JVM中将形成一份描述Class结构的元信息对象,通过该元信息对象可以获知Class的结构信息:如构造函数,属性和方法等,Java允 ...
 - MySql权威指南
			
[MySql权威指南] 1.索引(index):原始数据纪录的排序情况. 2.存储过程(store procedure),就是函数. 3.触发器是一组SQL命令,当数据库执行特定操作时触发,如UPDA ...
 - df、du、fdisk
			
[df.du.fdisk] 参考:http://os.51cto.com/art/201012/240726.htm
 - 备份u盘kali系统
			
把kali系统装在u盘上,会带来极大的便利,只要有网有机就能随时随地hacking,但是u盘体积太小极易丢失,所以需要对其备份以备万一. 一般kali启动U盘分为两个区:启动区和文件存放区.如下图 我 ...
 - stock抓取基本资料
			
use Goutte\Client; use GuzzleHttp\Client as GuzzleClient; include './vendor/autoload.php'; $client = ...
 - VMware Ubuntu安装
			
不是每一个程序员都必须玩过linux,只是博主觉得现在的很多服务器都是linux系统的,而自己属于那种前端也搞,后台也搞,对框架搭建也感兴趣,但是很多生产上的框架和工具都是安装在服务器上的,而且有不少 ...
 - c++:空构造空析构的益处之一
			
项目开发过程中发现一个问题,有段代码,一个动态库的cpp代码里不包含头文件中类的空构造空析构实现,就会出现编译出的动态库依赖项少了很多.而添加后则多了好几个依赖项.下面看例子: ##a.h class ...
 
			
		
所有线程共享数据区
线程隔离数据区