美文网首页
Jvm内存结构及程序运行过程(1)

Jvm内存结构及程序运行过程(1)

作者: lennasu | 来源:发表于2021-08-17 11:25 被阅读0次

1. 初识JVM

问题:我们的.java 文件是怎么运行的?

解答:我们的.java 文件通过编译器编译成.class 文件 ,通过我们的ClassLoader 加载器加载到JVM运行时内存块。然后我们的CPU 去运行我们的程序。运行我们的程序是需要计算机里的很多模块配合的,如CPU ,内存,寄存器 等。所以,不管是什么语言编写的程序,只要最终编译成.class 文件,那我们的java 虚拟机 就可以运行他,只要安装了java 虚拟机,就可以在任何平台上跑java 的程序,这也是java 强大的原因。以前塞班系统上的应用程序就是用我们的java 写的。

问题:那我们的程序在虚拟机中又是怎么运行的呢?

解答:java虚拟机 也相当于我们的一个平台,一个宿主。每一个应用在java 虚拟机中都是一个独立的门户。当我们的应用需要到的程序文件时就会通过我们的ClassLoader 把.class 文件加载到JVM运行时内存中。ClassLoader 怎么加载的我们后续再解释。JVM 运行时内存大致可以分为五大类:方法区,堆区,虚拟机栈,本地方法栈,程序计数器。然而 我们的应用不可能都是一个线程,可能是多个线程。根据线程资源分配的话分为:线程共享区(方法区,堆区) 线程私有区(虚拟机栈,本地方法栈,程序计数器)。

现在我们分别来介绍一下这5个部分到底有什么作用,我们的程序在这5个功能模块上是怎么协调运行我们的程序的。

  1. 程序计数器:从字面上的意思可理解成 运行程序的一个标记的东西。 我们的java程序是多线程的,CPU 可以在多个线程中分配时间片。当我们的某一个线程被挂起时,我们的程序计数器就要记录当前代码执行到了那一行,下一次线程被唤醒时,程序继续从之前运行的那里开始运行。程序计数器的生命周期和线程是同步的。
  2. 虚拟机栈:说到栈,那就很明显就是先进后出的。当我们运行某一个方法时就会创建一个栈帧,我们运行的方法 会在这个栈帧中去操作。栈帧中包括局部变量表,操作数栈,动态连接,返回地址等。正常我们的程序会编译成字节码指令,会在操作栈中入栈出栈 计算出每个方法的运行结果,然后返回,退出方法。
  3. 本地方法栈:本地方法栈和虚拟机栈大致相同,主要就是执行本地方法 native 方法。JNI开发过程中会用到本地方法栈。
  4. 堆:JVM 运行时内存管理的最大的一块内存,该区域是存放我们对象实例,所以这块的内存回收和创建 都是非常重要的,内存是有限的,如果管理不当就会导致内存不够用,不够用就会出现OOM 。
  5. 方法区:方法区主要存储一些 加载的类的信息 版本号,字段,方法,接口 ,常量,静态变量。

相关文章

  • Jvm内存结构及程序运行过程(1)

    1. 初识JVM 问题:我们的.java 文件是怎么运行的? 解答:我们的.java 文件通过编译器编译成.cla...

  • Jvm内存结构与垃圾回收

    1. jvm运行时内存结构 程序计数器:当前线程通过程序计数器来辅助执行代码,《深入理解JVM》书作者称为...

  • 2018年java京东面试题

    1.JVM的内存结构和管理机制; JVM实例:一个独立运行的java程序,是进程级别 JVM执行引擎:用户运行程序...

  • 精通JVM(一)——JVM内存结构

    一.JVM内存结构概览 JVM在运行Java程序的过程中,会把它所管理的内存划分为若干个不同的数据区域,这些区域有...

  • java内存模型

    java代码是运行在jvm上面的,java的运行时内存结构即是jvm运行时结构。 java内存结构从内存是否共享的...

  • JVM学习笔记一

    JVM运行机制 JVM的启动过程 JVM的基本结构 JVM通过ClassLoader将class文件加载到内存中 ...

  • JVM结构-内存结构(运行时数据区)

    我们知道JVM内存结构也就是java程序时运行区,所以在了解之前首先对其思考: JVM内存结构都包含哪几部分,都是...

  • 5.JVM层GC调优

    JVM与调优 imooc JVM Markdown JVM的内存结构 运行时数据区 程序计数器PC Regist...

  • 划重点必考-JMM-内存模型

    JVM的内存模型(JMM) JVM中定义了自己的内存结构模型。JVM作为java程序一次编写到处运行的载体,为了兼...

  • JAVA应用性能监控之JVM层GC调优

    1. JVM内存结构 1.1 运行时数据区 程序计数器PC Register:JVM支持多线程同时执行,每一个线程...

网友评论

      本文标题:Jvm内存结构及程序运行过程(1)

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