JVM内存空间划分与作用】的更多相关文章

虚拟机栈:Stack Fame 栈桢 程序计数器(Program Counter): 本地方法栈:主要用于处理本地方法 堆(Heap): JVM管理的最大一块内存空间 方法区(Method Area): 存储元信息, 永久代(Permanent Generation),从JKD1.8开始,已经彻底废除了永久代.使用元空间(meta space) 运行时常量池: 方法区的一部分内容 直接内存: Direct Memory…
在之前已经对Java的字节码进行了非常详细而又系统的学习了,接下来开启jvm内存相关的新篇章,在一个新知识开头之前肯定得理论化的对其进行一个整体的介绍,所以摒弃浮躁,先来看看相关的理论,主要是看一下JVM内存的相关结构: 虚拟机栈:每一个方法在执行的过程中都会生成一个栈帧(Stack Frame,在之前[https://www.cnblogs.com/webor2006/p/9718062.html]已经有介绍过)这个数据结构. 程序计数器(Program Counter):它占据的空间是比较小…
第一部分.闲扯+概述 近来在研读<深入理解java虚拟机>一书,读完之后做个小结,算是记录一下自己的学习所得,在成长的路上,只能死磕. 要理解JVM,就要先从其内存区域划分开始,知道其由几部分构成,再了解各部分的功能,这样就能对其整体有一个了解. 话不多说,总体图先呈上: 可以看到,线程私有的内存区域有虚拟机栈.本地方法栈.程序计数器,这些区域都不会出现线程安全问题:而线程共享的区域有堆.方法区. 下面对其各个分区域进行介绍. 第二部分:JVM内存区域划分 1.首先是最简单的程序计数器,每个线…
JVM内存结构划分 JVM内存结构划分 数据区域划分 程序计数器 虚拟机栈 本地方法栈 堆 方法区 运行时常量池 StringTable 直接内存 创建新对象说明 对象的创建 对象的内存布局 对象头 实例数据 对齐填充 对象的访问定位 数据区域划分 运行时内存区域划分:程序计数器.虚拟机栈.本地方法栈.堆.方法区 程序计数器 线程私有 通过寄存器实现 不会存在运行溢出 当前线程所执行的行号指示器,记住下一条JVM指令的执行地址 虚拟机栈 垃圾回收不涉及栈内存 栈内存是线程私有的,可以理解为线程运…
JVM内存的划分有五片: 1.   寄存器: 2.   本地方法区: 3.   方法区: 4.   栈内存: 5.   堆内存.…
那么我们在开始介绍Java内存区域之前,我们先放一张内存区域的图,方便我们后面介绍的时候可以对照着看. 须知,本文是根据JDK8来介绍的. 程序计数器 首先它是线程私有的,它也称为代码的行号指示器,字节码解释器就是通过改变程序计数器的位置来确定下一行要执行的代码,它不存在OOM. 如果线程正在执行一个Java方法,那么它记录的是正在执行虚拟机字节码指令的地址,如果是一个本地方法那么它的值为空. Java虚拟机栈 它也是线程私有的,它的声明周期和线程一致.每个线程创建时都会创建一个虚拟机栈,内部保…
前言 Java程序的运行是通过Java虚拟机来实现的.通过类加载器将class字节码文件加载进JVM,然后根据预定的规则执行.Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域.这些内存区域被统一叫做运行时数据区.Java运行时数据区大致可以划分为5个部分.如下图所示.在这里要特别指出,我们现在说的JVM内存划分是概念模型.具体到每个JVM的具体实现可能会有所不同.具体JVM的实现我只会提到HotSpot虚拟机的实现细节. 程序计数器 程序计数器是一块较小的内存…
以下内容转自:http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=29632145&id=4616836 jvm区域总体分两类,heap区和非heap区.heap区又分:Eden Space(伊甸园).Survivor Space(幸存者区).Tenured Gen(老年代-养老区). 非heap区又分:Code Cache(代码缓存区).Perm Gen(永久代).Jvm Stack(java虚拟机栈).Local Method…
jvm区域总体分两类,heap区和非heap区.heap区又分:Eden Space(伊甸园).Survivor Space(幸存者区).Tenured Gen(老年代-养老区). 非heap区又分:Code Cache(代码缓存区).Perm Gen(永久代).Jvm Stack(java虚拟机栈).Local Method Statck(本地方法栈). HotSpot虚拟机GC算法采用分代收集算法: 1.一个人(对象)出来(new 出来)后会在Eden Space(伊甸园)无忧无虑的生活,直…
前言 Java程序的运行是通过Java虚拟机来实现的.通过类加载器将class字节码文件加载进JVM,然后根据预定的规则执行.Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域.这些内存区域被统一叫做运行时数据区.Java运行时数据区大致可以划分为5个部分.如下图所示.在这里要特别指出,我们现在说的JVM内存划分是概念模型.具体到每个JVM的具体实现可能会有所不同.具体JVM的实现我只会提到HotSpot虚拟机的实现细节. 程序计数器 程序计数器是一块较小的内存…