JVM运行数据区
1、java虚拟机在运行的时候会把内存分为以下几个区域,如图:
运行时数据区,学习java虚拟机必须要弄清楚这里所有的区概况及作用.
1) 程序计数器:线程私有,一块较小的内存,行号指示器,字节码解释器工作时就是通过改变这个计数器的值,来选下一条字节码指令,比如分支,循环,跳转,异常 处理,线程恢复等基础功能靠这个计数器来完成。ps:由于java的多线程是线程轮流切换的,一个处理器(多处理器叫一个内核)同一时刻只会执行一条线 程,所以必须保证这个程序计算器是线程私有的 。此内存区域是唯一一个没有规定任何内存溢出的地方。
2)java虚拟机栈,这也是程序员所关心的两块内存中的一块,栈内存。
特点: 1、线程私有 2、生命周期与线程相同 3、描述的java方法执行的内存模型。
描述 :一个线程执行会有至少一个方法,没当线程进入一个方法,会在虚拟机栈创建一个栈帧,用于存储局部变量表(基本7种数据类型,对象引用)、操作帧,方法出 口等信息。每一个方法被调用即入栈,完成即出栈。当然我们通常说的栈 ,就是局部变量表。虚拟机栈会出现两种异常,当虚拟机请求栈的深度大于所允许的深度,会抛出StackOverFlowerError,虚拟机栈扩展到无 法拥有足够的内存,会抛出OutOfMemoryError。
3)本地方法栈。和虚拟机栈作用一样,执行的都是native方法,即本地方法,随线程而生,随线程而死。
4)堆。我们最关注的一块,先说下他们的几个特点。
特点:1、内存最大的一块;2、被所有线程共享;3、虚拟机启动的时候创建;4、目的:存放对象的实例。
5)方法区:被所有线程共享,存储内容:
1、虚拟机加载的类信息;
2、常量
3、静态变量
4、即时编译器编译后的代码
此区域包括了运行时常量池。方法区内存回收较少,一般是两种,常量池回收,类型卸载。
6)直接内存,非java虚拟机的一部分,也会频繁使用、
JVM运行数据区的更多相关文章
- java虚拟机 jvm 栈数据区
java栈帧还是需要一些数据支持常量池的解析.正常方法的返回和异常的处理.大部分的java字节码指令需要进行常量池的访问,在栈帧数据区中保存着访问常量池的指针,方便程序访问java常量池.如下图所示: ...
- JVM运行原理详解
1.JVM简析: 作为一名Java使用者,掌握JVM的体系结构也是很有必要的. 说起Java,我们首先想到的是Java编程语言,然而事实上,Java是一种技术,它由四方面组成:Ja ...
- 「JVM」知识点详解一:JVM运行原理详解
前言 JVM 一直都是面试的必考点,大家都知道,但是要把它搞清楚又好像不是特别容易.JVM 的知识点太散,不系统,今天带大家详细的了解一下jvm的运行原理. 正文 1 什么是JVM? JVM是Java ...
- JVM内存结构——运行时数据区
在Java虚拟机规范中将Java运行时数据划分为6种,分别为: PC寄存器(程序计数器) Java栈 堆 方法区 运行时常量池 本地方法栈 一.PC寄存器(程序计数器) PC寄存器(Program C ...
- Jvm基础(1)-Java运行时数据区
最近在看<深入理解Java虚拟机>,里面讲到了Java运行时数据区,这是Jvm基本知识,把读书笔记记录在此.这些知识属于常识,都能查到的,如果我有理解不对的地方,还请指出. 首先把图贴上来 ...
- JVM学习笔记-运行时数据区
不同于C,C++程序,Java程序的内存管理工作由Java虚拟机(JVM)接管,这减低了java程序员的负担,但如果出现内存泄露与溢出问题如报OutOfMemory,StackOverFlow异常错误 ...
- [译]JVM运行时数据区
(本篇文章翻译自JVM Run-Time Data Areas) 这是我阅读JVM规范的笔记,而且我画了一个图来帮助我理解. 1.每一个单独的线程(非共享的)的数据区 针对每一个单独的线程的数据区包括 ...
- JVM入门——运行时数据区
这张图我相信基本上对JVM有点接触的都应该很熟悉,可以说这是JVM入门的第一课.其中的“堆”和“虚拟机栈(栈)”更是耳熟能详.下面将围绕这张图对JVM的运行时数据区做一个简单介绍. 程序计数器(Pro ...
- 深入理解JVM(2)——运行时数据区
1.运行时数据区 1.1.程序计数器 记录当前线程正在执行的字节码指令的地址,如果正在执行的是 Native 方法,这个计数器值则为空. 1.2.虚拟机栈 每个 Java 方法在执行的同时会创建一个栈 ...
随机推荐
- Javascript的AMD规范
Javascript发展到今天,已经从一个小丑语言变成了不可替代的前端利器,已经脱离了低端的玩笑脚步,而转变为有规可依的强大语言. 本文主要讲述下如今被大力推广的AMD规范,为什么要AMD,什么场景是 ...
- pthread_rwlock_t读写锁函数说明
读写锁 索引: 初始化一个读写锁pthread_rwlock_init 读锁定读写锁 pthread_rwlock_rdlock 非阻塞读锁定 pthread_rwlock_tryrdloc ...
- php学习小技巧
1.print_r可打印数组 <?php echo '<p class="ajax">This paragraph was loaded with AJAX.&l ...
- php数组(array)输出三种形式
$bbbb=array("11"=>"aaa","22"=>"bbb"); //只能输出值value不能输出 ...
- .animate动画
.animate(params, [duration], [easing], [callback]) params: 结果样式属性 duration: 动画时长 也可以用 slow normal fa ...
- 关于Function()函数对象的那些小九九
概念:首先,函数是一种特殊类型的数据,函数也是数据类型的一种,实际上函数也是一种对象,函数对象的内建构造器是Function(); 函数的几种创建方式: 函数声明法: function sum(a,b ...
- DOM对象控制HTML无素——详解2
节点属性 在文档对象模型 (DOM) 中,每个节点都是一个对象.DOM 节点有三个重要的属性 : 1. nodeName : 节点的名称 2. nodeValue :节点的值 3. nodeType ...
- yii2源码学习笔记(五)
Event是所有事件类的基类.它封装了与事件相关的参数. yii2\base\Event.php <?php /** * @link http://www.yiiframework.com/ * ...
- ecshop后台根据条件查询后不填充table 返回的json数据,content为空?
做ecshop后台开发的时,根据条件查询后,利用ajax返回的content json数据内容为空,没有填充table 效果 预期效果 问题: make_json_result($smarty -&g ...
- windows2008 R2 安装wampserver
1. 在官网http://www.wampserver.com/下载,wampserver2.5; 2. 安装时候会缺少msvcr110.dll文件,所以先要安装这个文件: 3. 先从微软下载Visu ...