美文网首页
简单了解JVM的组成

简单了解JVM的组成

作者: 小飞的大梦想 | 来源:发表于2019-07-17 14:14 被阅读0次

JVM的组成主要分为以下四个部分

image.png

而对于开发人员来讲我们主要关注的则是运行时数据区

image.png
  • 程序计数器(Program Counter Register)是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。在虚拟机的概念模型里,字节码解析器的工作是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。
    特点:线程私有

  • Java虚拟机栈(Java Virtual Machine Stacks)描述的是Java方法执行的内存模型,每个方法在执行的同时都会创建一个线帧(Stack Frame)用于存储局部变量表、操作数栈、动态链接、方法出口等信息,每个方法从调用直至执行完成的过程,都对应着一个线帧在虚拟机栈中入栈到出栈的过程。
    特点:线程私有

1、如果线程请求的栈深度大于虚拟机所允许的栈深度就会抛出StackOverflowError异常。
2、如果虚拟机是可以动态扩展的,如果扩展时无法申请到足够的内存就会抛出OutOfMemoryError异常。

  • 本地方法栈(Native Method Stack)与虚拟机栈的作用是一样的,只不过虚拟机栈是服务Java方法的,而本地方法栈是为虚拟机调用Native方法服务的。
    特点:线程私有

  • Java堆(Java Heap)是Java虚拟机中内存最大的一块,是被所有线程共享的,在虚拟机启动时候创建,Java堆唯一的目的就是存放对象实例,几乎所有的对象实例都在这里分配内存,随着JIT编译器的发展和逃逸分析技术的逐渐成熟,栈上分配、标量替换优化的技术将会导致一些微妙的变化,所有的对象都分配在堆上渐渐变得不那么“绝对”了。
    特点:线程共享

  • 方法区(Methed Area)用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译后的代码等数据。
    特点:线程共享

相关文章

  • 简单了解JVM的组成

    JVM的组成主要分为以下四个部分 而对于开发人员来讲我们主要关注的则是运行时数据区! 程序计数器(Program ...

  • JVM 之 运行时数据区域

    学习JVM,首先我们需要了解 JVM 运行时数据区域。我们根据下面两张图,简单的了解一下。 组成部分: 方法区 (...

  • 理解JVM(2)- JVM体系结构

    前一篇我们简单了解了JVM是什么,现在我们将从整体上认识一下JVM由哪些部分组成 我们看一下JVM的架构: JVM...

  • JVM——基本结构

    前言 只有了解了JVM的组成部分,才能算的上真正的了解了JVM,JVM的组成5个部分:堆、虚拟机栈、本地方法栈、程...

  • Java虚拟机组成

    Java虚拟机(Java Virtual Machine)下文简称jvm,本文主要讲的是jvm的组成,了解了它,就...

  • 2018-01-16学习日记

    谈谈对JVM的理解(也就是你对他了解多少):首先我们可以想象一下jvm的组成,是有那些模块组成的: 类加载器子系统...

  • JVM的组成

    JVM 四大组成部分 类加载器(ClassLoader) 运行时数据区(Runtime Data Area) 执行...

  • 【JVM篇】【JVM的组成】

    【JAVA】【JVM篇】【JVM的组成】 来自二线的码农笔记,用自己的理解总结知识点,互相学习 1. JVM概念 ...

  • 58 - ASM之JVM Architecture

    JVM的组成部分 从JVM组成的角度来说,它由Class Loader SubSystem、Runtime Dat...

  • JVM

    一、jvm组成 JVM由4大部分组成:ClassLoader,Runtime Data Area,Executio...

网友评论

      本文标题:简单了解JVM的组成

      本文链接:https://www.haomeiwen.com/subject/jzpzkctx.html