jvm虚拟机笔记<一> 内存区域】的更多相关文章

运行时数据区域: 程序计数器:字节码的行号指示器. 虚拟机栈:为每个方法创建一个栈帧(存放方法中的局部变量,变量引用等). 本地方法栈:存放本地方法. -------------------------------------------以上是线程独立的---------------------------------------------------- 堆:存放对象实例 方法区:存放类的版本,字段,方法,接口和常量池(运行时常量池). ----------------------------…
1.内存区域划分 根据我们之前介绍的垃圾收集算法,限定商用虚拟机基本都采用分代收集算法进行垃圾回收.根据对象的生命周期的不同将内存划分为几块,然后根据各块的特点采用最适当的收集算法.大批对象死去.少量对象存活的,使用复制算法,复制成本低:对象存活率高.没有额外空间进行分配担保的,采用标记-清除算法或者标记-整理算法. 从上面的图可以看出, JVM区域总体分两类,heap区和非heap区. 1.heap区又分为: - Eden Space(伊甸园). - Survivor Space(幸存者区).…
本系列笔记主要基于<深入理解Java虚拟机:JVM高级特性与最佳实践 第2版>,是这本书的读书笔记. 概述 Java 虚拟机为程序员分担了很多内存管理的工作,不再像 C/C++ 那样容易出现内存泄漏和内存溢出问题了,也正是这样,导致一旦出现了内存泄漏和溢出方面的问题,就难以排查.因此一个优秀的 Java 程序员应该对 Java 虚拟机有充足的了解,JVM 是你的必修课. 运行时数据区域 根据<Java虚拟机规范(Java SE 7版)>,JVM 所管理的内存区域的划分如下: 每个内…
什么是虚拟机,什么是Java虚拟机 虚拟机 定义:模拟某种计算机体系结构,执行特定指令集的软件 系统虚拟机(Virtual Box.VMware),进程虚拟机 进程虚拟机 jvm.Adobe FlashPlayer.FC模拟器 高级语言虚拟机 JVM ..NET CLR.P-Code java语言虚拟机 可以执行Java语言的高级语言虚拟机.Java语言虚拟机并不一定就可以称为JVM,譬如: Apache Harmony JavaTM虚拟机 必须通过Java TCK(Technology Com…
java虚拟机在执行java程序的时候会把它所管理的内存分为多个不同的区域,每个区域都有不同的作用,以及由各自的生命周期,有些随着虚拟机进行的启动而存在,有些区域则依赖于用户线程的启动或结束而建立或销毁等.在<java虚拟机规范(Java SE7版)>中规定,java内存分为以下一种,如图所示: 1.程序计数器 程序计数器(Program Counter Register)是一个内存较小的区域,它可以被看作是当前线程所执行到的字节码的行号的指示器,字节码解释器在执行下一条指令,比如分支,跳转,…
Graal VM: Run Programs Faster Anywhere. 跨语言全栈虚拟机,可以作为"任何语言"的运行平台使用. Java内存结构 程序计数器:线程私有,较小的内存空间.可以看作是当前线程所执行的字节码的行号指示器.在概念模型里,字节码解释器工作时就是通过改变这个计数器来选取下一条需要执行的字节码指令.因为java虚拟机的多线程时通过线程轮流切换.分配处理器执行时间来实现的,所以为了线程切换之后能恢复,每条线程都需要一个独立的程序计数器.如果线程执行的是一个jav…
1.运行时常量池属于线程共享区中的方法区. 2.运行时常量池用于编译期生成的各种自变量,符号引用,这部分内用将在类加载后接入方法区的运行时常量池中存放. 看如下代码所示,如图: public class Test { public static void main(String[] args) { String s1 = "abc"; String s2 = "abc"; String s3 = new String("abc"); System…
Java内存管理 本文主要介绍Java虚拟机运行时的内存区域是如何划分的.Java对象的创建过程.Java对象的内存布局.Java对象的访问定位 一:运行时区域划分 主要可以分为以下 几个: 程序计数器: 栈(虚拟机栈和本地方法栈): 堆: 方法区: 1.程序计数器 记录正在执行的虚拟机字节码指令的地址.唯一一个没有规定任何OutOfMemoryError的区域. 2.栈 栈主要用来存储局部变量表(各种局部变量(方法中的变量),基本类型和对象引用类型).操作数栈.动态链接等信息.线程私有的.所以…
一 Java内存区域与HotSpot虚拟机对象 1 Java技术体系.JDK.JRE?     Java技术体系包括:         · Java程序设计语言:         · 各种硬件平台上的Java虚拟机:         · Class文件格式:         · Java API类库:         · 来自商业机构或开源社区的第三方Java类库.     JDK,即Java开发工具包,包括Java程序设计语言.Java虚拟机.Java API类库,是用于支持Java程序开发的…
第二章:Java内存区域和内存溢出异常 2.2运行时数据区域 运行时数据区分为方法区,堆,虚拟机栈,本地方法栈,程序计数器 方法区和堆是线程共享的区域 虚拟机栈,本地方法栈,程序计数器是数据隔离的数据区 2.2.,程序计数器,即PC,本质是一块较小的内存区域.可以看做当前线程所执行的字节码的行号指令器 有了它可以实现字节码指令,分支,循环.跳转.异常处理,线程恢复 每个线程有一个单独的PC,各个线程之间不互相影响,独立存储 如果执行的方法是java方法,计数器记录的是正在执行的虚拟机字节码指令的…