`

JVM认识

阅读更多

首先看一个下java运行过程:



Java Virtual Machine(Java虚拟机),它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机有自己完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。JVM屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。Java虚拟机在执行字节码时,实际上最终还是把字节码解释成具体平台上的机器指令执行。


JVM定义了控制Java代码解释执行和具体实现的五种规格,它们是:
  *JVM指令系统
     由 操作码和操作数两部分组成

  *JVM寄存器
JVM只设置了4个最为常用的寄存器。它们是:
  pc程序计数器
  optop操作数栈顶指针
  frame当前执行环境指针
  vars指向当前执行环境中第一个局部变量的指针

  *JVM栈结构
    局部变量
  执行环境
  操作数栈

  *JVM碎片回收堆
    Java类的实例所需的存储空间是在堆上分配的。

  *JVM存储区
    JVM有两类存储区:常量缓冲池和方法区。常量缓冲池用于存储类名称、方法和字段名称以及串常量。方法区则用于存储Java方法的字节码。

虚拟机的内层循环的执行过程如下:
  do{
  取一个操作符字节;
  根据操作符的值执行一个动作;
  }while(程序未结束)


上面对虚拟机的各个部分进行了比较详细的说明,下面通过一个具体的例子来分析它的运行过程。
  虚拟机通过调用某个指定类的方法main启动,传递给main一个字符串数组参数,使指定的类被装载,同时链接该类所使用的其它的类型,并且初始化它们。例如对于程序:
  class HelloApp
  {
  public static void main(String[] args)
  {
  System.out.println("Hello World!");
  for (int i = 0; i < args.length; i++ )
  {
  System.out.println(args);
  }
  }
  }
  编译后在命令行模式下键入: java HelloApp run virtual machine
  将通过调用HelloApp的方法main来启动java虚拟机,传递给main一个包含三个字符串"run"、"virtual"、"machine"的数组。现在我们略述虚拟机在执行HelloApp时可能采取的步骤。
  开始试图执行类HelloApp的main方法,发现该类并没有被装载,也就是说虚拟机当前不包含该类的二进制代表,于是虚拟机使用ClassLoader试图寻找这样的二进制代表。如果这个进程失败,则抛出一个异常。类被装载后同时在main方法被调用之前,必须对类HelloApp与其它类型进行链接然后初始化。链接包含三个阶段:检验,准备和解析。检验检查被装载的主类的符号和语义,准备则创建类或接口的静态域以及把这些域初始化为标准的默认值,解析负责检查主类对其它类或接口的符号引用,在这一步它是可选的。类的初始化是对类中声明的静态初始化函数和静态域的初始化构造方法的执行。一个类在初始化之前它的父类必须被初始化。



  • 大小: 10.5 KB
  • 大小: 18.8 KB
分享到:
评论

相关推荐

    JVM监控工具使用入门

    通过本文的介绍,读者应该对JDK自带的JVM监控工具有了较为全面的认识。这些工具不仅可以帮助开发者更好地理解JVM的运行状态,还能在遇到性能问题时提供有效的诊断手段。掌握这些工具的使用方法对于提高Java应用程序...

    认识 java JVM虚拟机选项 Xms Xmx PermSize MaxPermSize 区别

    Java JVM 虚拟机选项 Xms Xmx PermSize MaxPermSize 区别 Java JVM 虚拟机选项 Xms Xmx PermSize MaxPermSize 是 Java 虚拟机(JVM)中用于配置内存管理的参数。这些参数控制着 JVM 中的堆内存和非堆内存的分配。 ...

    JVM内存管理白皮书

    此外,文档的结构化布局使得内容条理清晰,即使是初学者也能够逐步建立起对JVM内存管理的全面认识。通过这份白皮书的学习,读者将能够深入理解JVM内存管理的复杂性,并掌握处理内存问题的有效方法。

    jvm java虚拟机 调优 马士兵 笔记

    jvm java虚拟机 调优 马士兵 笔记 让你对java虚拟机调优有初步的认识

    JVM实战-JVM类加载机制案例分析

    通过实践操作,掌握类的加载、连接与初始化过程,了解不同类型的类加载器及其工作原理,学会创建自定义的类加载器,并对类的卸载有所认识。实验将结合具体的Java程序实例,运用单例模式对静态变量和对象进行初始化,...

    JVM演讲PPT分享

    JVM演讲PPT分享 本次分享的核心内容围绕Java虚拟机(JVM)及其在运行Java程序...通过以上内容的深入学习,可以对JVM有一个全面的认识,理解它在Java生态系统中的核心地位,以及如何通过学习JVM来提升Java程序的性能。

    JVM从入门到入魔.zip

    《JVM从入门到入魔》是一份深度探讨Java虚拟机(JVM)的详细学习资料,涵盖了JVM的基础知识到高级特性的深入解析。...通过学习这份笔记,读者将能够对JVM有全面而深入的认识,为成为Java技术高手奠定坚实基础。

    大白话带你认识JVM.pdf

    Java虚拟机(JVM)是Java程序的核心组成部分,它是一个虚拟的计算机系统,根据Java虚拟机规范执行字节码。JVM屏蔽了不同操作系统和硬件的差异,使得Java程序具有跨平台的能力。JVM主要由五大部分组成:类加载器、...

    JVM内存结构.pdf

    通过对JVM内存各部分的认识,我们可以更有效地管理和优化资源使用,提高应用程序的整体性能。此外,熟悉类加载机制和JDK提供的各种调优工具,也是解决性能问题的关键所在。希望本文能帮助读者深入理解JVM的核心概念...

    JVM执行子系统.pdf

    Java虚拟机(JVM)执行子系统是Java平台的核心组件之一,它的主要功能是加载、链接并...通过阅读和理解Class文件的结构,我们可以更好地掌握Java程序的内部工作原理,并对Java平台的强大多态性和安全性有更深的认识。

    很入理解JVM体系

    2.1、JVM相关概念 1、什么是JVM 2、JVM能运行哪些编程语言 3、JVM运行流程 4、JVM生命周期 5、三大流行的JVM 2.2、JVM体系结构 1、类加载器 2、执行引擎 3、运行时数据区 4、本地库接口 2.3、JVM内存参数调整及监控 ...

    JVM基础系列

    - **字节码层面的认识**:对于Java开发者来说,深入到字节码级别能够帮助理解程序运行的基本机制。例如,了解Java中的布尔类型实际上是如何在JVM内部被处理的(使用整型的1和0表示),这对于调试特定类型的问题尤为...

    JVM高级特性与最佳实践

    《JVM高级特性与最佳实践》是一本专注于Java虚拟机(JVM)学习的书籍,适合广大Java开发人员。...通过此书,读者不仅可以获得关于JVM结构和工作原理的全面认识,还能掌握在开发过程中应用这些知识的技巧和方法。

    JVM学习札记

    ### JVM学习札记 #### 一、JVM运行机制 ##### 1、JVM的启动流程 JVM的启动过程主要包括以下步骤: ...通过对JVM的工作原理有一个清晰的认识,开发者可以更好地优化程序性能,避免常见问题的发生。

    JVM状态监控与OOM案例分析

    JVM状态监控与OOM案例分析…… 简单认识,了解

    基于周志明老师的《深入理解JVM虚拟机》整理的JVM思维导图

    我看完第一遍都是懵的,在看第二遍的时候结合着自己做思维导图才对JVM有了一个系统认识。JVM的内容很多,普通的面试八股文只有运行时数据区及一点简单的GC内容。我分享的该笔记可以用来结合周志明老师的《深入理解...

    JVM底层原理课件PPT

    通过以上分析,我们对JVM中的类加载子系统有了较为全面的认识。类加载子系统不仅是JVM的核心组成部分之一,也是理解Java程序运行机制的关键。掌握类加载的过程和机制对于提升Java开发者的技能具有重要意义。在未来的...

    JVM内存优化、垃圾回收、内存分析知识

    认识JVM内存优化, 避免最大的误区:认为JVM内存越大越好。看到一个线程 blocked就认为阻塞了。

    JVM及其调优

    初学者想要对jvm垃圾回收有比较全的了解和认识,这个PPT正是你所需要的,希望对你有用,也感谢原资源分享者!

Global site tag (gtag.js) - Google Analytics