Jvm(12),运行时数据---共享区---jvm堆空间总览

一,jvm堆总览

这里我们先不展开说,只是从总体上来看一下这个堆内存的情况,我们知道堆内存一般都是存放对象的内存区域,也就是new出来的对象的地方,所以这一块区区域最大的地方,所以这一块也是GC垃圾回收最经常光顾的区域。

至于新生代老年代和伊甸园我们后面再来看,按照教程走。

原文地址:https://www.cnblogs.com/qingruihappy/p/9691305.html

时间: 2024-10-11 05:14:15

Jvm(12),运行时数据---共享区---jvm堆空间总览的相关文章

JVM入门——运行时数据区

这张图我相信基本上对JVM有点接触的都应该很熟悉,可以说这是JVM入门的第一课.其中的“堆”和“虚拟机栈(栈)”更是耳熟能详.下面将围绕这张图对JVM的运行时数据区做一个简单介绍. 程序计数器(Program Counter Register) 这和计算机操作系统中的程序计数器类似,在计算机操作系统中程序计数器表示这个进程要执行的下个指令的地址,对于JVM中的程序计数器可以看做是当前线程所执行的字节码的行号指示器,每个线程都有一个程序计数器(这很好理解,每个线程都有在执行任务,如果线程切换后要能

jvm的运行时数据区

jvm在java程序运行时会将它所管理的内存划分成不同的区域做不同的功能,这并不难以想象.主要有两类结构,即:堆和栈. java堆主要是保存运行时的对象和数组数据,是所有线程共享的内存区域,在堆中有方法区.运行时常量池.方法区是代码的存储区,类.方法数据.方法的字节码.字段.构造函数等信息都会存储在这里. 运行时常量池是存放类或接口中的方法和数据的常量池,当类或接口被加载的时候就会产生对应的运行时常量池,里面存储了从编译期可知的字面量到运行期才解析出来的方法和字段引用. jvm的线程是通过栈结构

JVM<一>----------运行时数据区域

参考:1.JVM Specification: http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-2.html#jvms-2.5 2.<深入理解Java虚拟机> 刚开始看JVM Specification ,说实话由于专业英语不过关,有些关键词总是看不懂意思,后来参考.<深入理解Java虚拟机>方能感悟到JVM的强大. 我们就先从运行时数据区域开始 一.运行时数据区域分配图 The Java Virtual Machine

JVM学习-运行时数据区

不同于C,C++程序,Java程序的内存管理工作由Java虚拟机(JVM)接管,这减低了java程序员的负担,但如果出现内存泄露与溢出问题如报OutOfMemory,StackOverFlow异常错误时,如果不了解JVM虚拟机的内存管理细节,往往很难快速定位错误. JVM在运行时会把其所管理的内存分为几个不同的数据区域,分别为:程序计数器,虚拟机栈,本地方法栈,堆,方法区等.这些区域存放的数据不同,功能也不同. JVM管理的内存包含以下几个运行时数据区: 1.程序计数器 程序计数器是一块较小的内

jvm(运行时数据区域)

以上是jvm在运行时内存的数据分区图例(各个分区简介): 1.程序计数器:           在jvm中一块很小的区域,主要作用就是记录当前线程执行字节码的行号指示器.           在单核的多线程中,cpu会在不同线程之间切换,为了切换回来时正确的回到当前线程的执行位置,           每个线程都有自己单独的程序计数器,之间互不影响,独立运行,同时这块区域也是在java虚拟机           规范中唯一没有规定任何OutOfMemoryError情况的区域. 2.虚拟机栈:

Jvm(9),运行时数据---独占区---虚拟机栈

一,总览 Java Virtual Machine Stacks,线程私有,生命周期与线程相同,描述的是Java方法执行的内存模型:每一个方法执行的同时都会创建一个栈帧(Stack Frame),由于存储局部变量表.操作数栈.动态链接.方法出口等信息.每一个方法的执行就对应着栈帧在虚拟机栈中的入栈,出栈过程. 我们来看一个例子 public class Demo3 { public void test1() { System.out.println("我是test1的方法"); tes

Jvm(8),运行时数据---独占区---程序计数器

一,什么是程序计数器. 程序计数器是一块较小的内存空间,它的作用可以看作是当前线程所执行的字节码的行号指示器.在虚拟机的概念模型里字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支.循环.跳转.异常处理.线程恢复等基础功能都需要依赖这个计数器来完成. 说白了就是代码该执行哪一行比如说下面的代码 程序计数器主要记录的就是行号,该执行哪一行不该执行哪一行的代码比如说5--6--10--11 程序计数器存储的就是这些代码. 以上的红色区域就是存储在程序计数器里面的. 二

Jvm(10),运行时数据---独占区---StackOverflowError和OutOfMemoryError区别

1.StackOverflowError 源代码解释说:抛出这个错误是因为递归太深.其实真正的原因是因为Java线程操作是基于栈的,当调用方法内部方法也就是进行一次递归的时候就会把当前方法压入栈直到方法内部的方法执行完全之后,就会返回上一个方法,也就是出栈操作执行上一个方法. public class StackOverflowTest { public static void main(String[] args){ method(); } private static void method

Jvm(11),运行时数据---独占区---本地方法栈

本地方法栈主要是来处理native的方法的,我们来看一下什么是native的方法. Java无法直接访问到操作系统底层(如系统硬件等),为此Java使用native方法来扩展Java 程序的功能. 其实在java中我们通用的虚拟机HotSpot中,本地方法栈和虚拟机栈是同一块区域在这里讲的一般是通用的虚拟机. 原文地址:https://www.cnblogs.com/qingruihappy/p/9691301.html