[JVM-1]Java运行时数据区域】的更多相关文章

JVM执行Java程序的过程中,会使用到各种数据区域,这些区域有各自的用途.创建和销毁时间.根据<Java虚拟机规范>,JVM包括下列几个运行时数据区域,如下图所示: 其中红色部分是线程私有的,即每个线程各自都有自己的一份.绿色部分是各个线程共享的. 1.PC寄存器(The pc Register) (1)每一个Java线程都有一个PC寄存器. (2)PC寄存器是用于存储每个线程下一步将执行的JVM指令,如该方法为native的,则PC寄存器中不存储任何信息. (3)此内存区域是唯一一个在JV…
一.JVM的出现 JVM将字节码解释成不同os下的机器指令,有了jvm,java语言在不同平台上运行时不需要重新编译 虚拟机发展史 (1)Sun Classic classic jvm要么采用纯解释器解释执行,要么采用JIT编译执行,一旦JIT进行编译执行,则解释器不再生效 如果使用JIT编译代码,则JIT会对每个方法,每行代码都进行编译,对于那种只需运行一次,不具有编译价值的代码,也会被JIT编译执行.迫于程序响应时间的压力,此阶段的JIT不敢采用编译耗时的优化技术,所以及时采用JIT输出本地…
Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域.这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有些区域则依赖用户线程的启动和结束而建立和销毁.根据<Java虚拟机规范(Java SE7版)>的规定,Java虚拟机所管理的内存将会包括以下几个运行时数据区域.如下图所示 1. 程序计数器 程序计算器(Program Counter Register)是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器.在虚拟…
java运行时内存区域划分为方法区,堆区,虚拟机栈区,本地方法栈,程序计数器.其中方法区跟堆区是线程共享的数据区,其他的是线程私有的数据区. 1.程序计数器 程序计数器(PC)是一块较小的内存,他是存储当前线程执行的字节码的行号指示器,可以类比硬件中PC,硬件中的PC用于指示当前程序执行的代码在内存中的内存地址. 2.JAVA虚拟机栈 虚拟机栈描述的是JAVA方法执行的内存模型.每个方法在执行时都会创建一直栈帧用于存储局部变量表,操作数栈,动态链接,方法出口灯信息.每一个方法从调用到结束都对应一…
Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域.这些区域都有各自的用途,以及创建和销毁时间.根据<Java虚拟机规范(Java SE 7版>的规定,Java虚拟机所管理的内存将会包括以下几个运行时数据区域,如下图所示. 程序计数器 程序计数器是一块较小的内存空间,它可以看做是当前线程(每个线程都有一个独立的程序计数器)所执行的字节码的行号指示器. Java虚拟机栈 Java虚拟机栈也是也是线程私有的.虚拟机栈描述的是Java方法执行的内存模型:每个方法在执…
根据<Java 虚拟机规范(Java SE 7版)>规定,Java虚拟机所管理的内存,将会包括以下几个运行时数据区域: 注: 1.由所有线程共享的数据区: 对应 java内存模型的主内存,各线程共有: 2.线程隔离的数据区:对应 java内存模型的工作内存,各自线程持有: 1.程序计数器(线程私有) 程序计数器(Program Counter Register) 是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器. 在虚拟机的概念模型里,字节码解释器工作时,就是通过改变“这个…
概述 JVM是Java语言的精髓所在,因为它Java语言实现了跨平台运行,以及自动内存管理机制等,本文将从概念上介绍JVM内存的各个区域,说明个区域的作用. JVM运行时数据区模型 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分成若干个不同的数据区域,这些数据区域都有各自的用途,以及创建和销毁时间,Java虚拟机所管理的内存将会包括以下几个运行时数区域 程序计数器 程序计数器是一块比较小的内存空间,它可以看做是当前线程所执行的字节码的行号指示器.在虚拟机的概念模型里,字节码解释器…
1. 程序计数器 当前线程所执行的字节码的行号指示器. 2. Java虚拟机栈 线程私有,与线程具有相同生命周期.用于存储局部变量表.操作数栈.动态链表.方法出口等信息. 局部变量表存放内容: 基本数据类型(boolean.byte.char.short.int.float.long.double) 对象引用(区别于符号引用,符号引用存放在常量池) returnAddress类型(指向一条字节码指令的地址) 64位长度的long和double类型数据占用2个局部变量空间(slot),其余占用1个…
数据区域有:程序计步器,虚拟机栈,本地方法栈,java堆,方法区 程序计步器: 它是一块较小的内存空间,它的作用可以看做是当先线程所执行的字节码的信号指示器. 每一条JVM线程都有自己的PC寄存器,各条线程之间互不影响,独立存储,这类内存区域被称为“线程私有”内存 在任意时刻,一条JVM线程只会执行一个方法的代码.该方法称为该线程的当前方法(Current Method) 如果该方法是java方法,那PC寄存器保存JVM正在执行的字节码指令的地址 如果该方法是native,那PC寄存器的值是un…
Java虚拟机(JVM)内部定义了程序在运行时需要使用到的内存区域 这些区域都有自己的用途,以及创建和销毁的时间.有些区域随着虚拟机进程的启动而存在,有的区域则依赖用户线程的启动和结束而销毁和建立. 1.线程间共享的内存区域 (1)HEAP  (堆) 大多数应用,堆都是Java虚拟机所管理的内存中最大的一块,它在虚拟机启动时创建,此内存唯一的目的就是存放对象实例.由于现在垃圾收集器采用的基本都是分代收集算法,所以堆还可以细分为新生代和老年代,再细致一点还有Eden区.From Survivior…