`
Weich_JavaDeveloper
  • 浏览: 100304 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JVM-运行过程

    博客分类:
  • JVM
阅读更多

上面对虚拟机的各个部分进行了比较详细的说明,下面通过一个具体的例子来分析它的运行过程。

  虚拟机通过调用某个指定类的方法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[i]);
  }
 }
}

 编译后在命令行模式下键入: java HelloApp run virtual machine

  将通过调用HelloApp的方法main来启动java虚拟机,传递给main一个包含三个字符串"run"、"virtual"、"machine"的数组。现在我们略述虚拟机在执行HelloApp时可能采取的步骤。

  开始试图执行类HelloApp的main方法,发现该类并没有被装载,也就是说虚拟机当前不包含该类的二进制代表,于是虚拟机使用ClassLoader试图寻找这样的二进制代表。如果这个进程失败,则抛出一个异常。类被装载后同时在main方法被调用之前,必须对类HelloApp与其它类型进行链接然后初始化。链接包含三个阶段:检验,准备和解析。检验检查被装载的主类的符号和语义,准备则创建类或接口的静态域以及把这些域初始化为标准的默认值,解析负责检查主类对其它类或接口的符号引用,在这一步它是可选的。类的初始化是对类中声明的静态初始化函数和静态域的初始化构造方法的执行。一个类在初始化之前它的父类必须被初始化。整个过程如下:

结束语

  本文通过对JVM的体系结构的深入研究以及一个Java程序执行时虚拟机的运行过程的详细分析,意在剖析清楚Java虚拟机的机理。

分享到:
评论

相关推荐

    nginx-upstream-jvm-route-1.15

    总的来说,"nginx-upstream-jvm-route-1.15"是一个针对Nginx 1.15版本的解决方案,它允许用户通过upstream模块更灵活地管理与JVM应用服务器的交互,并解决了配置过程中可能出现的特定错误。通过深入理解和应用该项目...

    JVM-Sandbox,基于jvm的实时无创aop框架容器.zip

    4. **容器化**:JVM-Sandbox作为一个框架容器,可以管理和控制代理对象的生命周期,包括创建、销毁等过程。这使得开发者可以更专注于业务逻辑,而不必关心代理对象的细节。 5. **应用场景**:JVM-Sandbox适用于多种...

    jvm-mon基于控制台的JVM监视

    3. **线程状态**:`jvm-mon`可展示当前运行的线程数量及状态,如RUNNABLE、WAITING、TIMED_WAITING等,这对于排查线程阻塞和死锁问题非常有帮助。 4. **类加载统计**:显示已加载的类数量,帮助分析类加载是否正常...

    weilei-JVM-ppt.rar

    【标签】"JVM"是Java虚拟机的缩写,它是Java程序运行的基础,负责解释执行字节码并管理内存。"JAVA进阶高级jav"进一步指出这份资料主要面向已经有一定基础的Java开发者,旨在帮助他们深入理解JVM的工作原理,提升到...

    jvm-profiler,jvm分析器向kafka、控制台输出或自定义报告器发送度量.zip

    总的来说,"jvm-profiler"是一个强大的工具,它为Java开发者提供了深入洞察JVM内部运作的窗口,有助于我们在开发和维护过程中实现更高效、更稳定的性能。通过理解和利用这个开源项目,我们可以更好地优化我们的...

    gp-jvm-visualvm

    在运行过程中,JVM会管理内存,包括堆(Heap)、栈(Stack)以及方法区(Method Area),这些区域各有其特定的功能和限制。 堆栈溢出(Stack Overflow)是程序运行时常见的错误,通常发生在当一个函数或方法的递归...

    jvm-sandbox demo

    它拦截并控制类的加载过程,允许在运行时动态地修改类的行为,同时对代码执行进行细粒度的权限控制。 **2. 安装与配置:** 首先,你需要将`jvm_sandbox`解压,并在项目中引入相应的依赖库。这通常包括JVM-Sandbox的...

    jvm调优测试仓库-jvm-monitor.zip

    在Java开发领域,JVM(Java Virtual Machine)是运行Java程序的核心,它的性能直接影响着应用的效率和稳定性。JVM调优是优化Java应用程序性能的关键环节,而"jvm-monitor"则提供了一种工具集来帮助开发者监控和分析...

    深入JVM---JVM命令---invokespecial

    《深入JVM---JVM命令---...理解`invokespecial`的工作原理有助于我们更深入地理解JVM的运行机制,进而优化Java程序的性能和设计。在实际编程中,合理运用这些知识能帮助我们编写出更加高效、稳定和安全的代码。

    Jvm调优练习-jvm-tuning.zip

    这可能包括设置不同的JVM参数,分析性能指标,以及理解不同参数对程序运行效率的影响。 【标签】虽然没有提供具体的标签,但我们可以推断出一些关键主题: 1. **内存管理**:包括堆内存(年轻代和老年代)、永久代...

    mini-jvm in rust实现jvm,jvm-rs-main.zip

    3. 运行时数据区:模拟JVM的堆、栈、方法区等,存储对象实例和运行时信息。 4. 类型系统:定义Java的类、接口、数组等类型,并处理类型检查和转换。 四、Rust实现JVM的关键技术 1. 解析字节码:使用Rust的二进制...

    jvm-demo1.zip

    在Java开发中,JVM(Java Virtual Machine)的性能优化是一项至关重要的任务,它直接影响到应用程序的运行效率和稳定性。`jvm-demo1.zip`这个压缩包提供了一些实战示例,包括死锁的演示、字节码的查看以及BTrace工具...

    用于测试jvm gc调优-share-jvm-gc.zip

    Java虚拟机(JVM)是Java程序运行的基础,它的垃圾收集器(GC)是自动管理内存的核心机制。在Java应用程序中,尤其是对于大型系统或高并发环境,进行JVM GC调优是提升性能、减少系统停顿时间的关键步骤。"用于测试...

    jvm-full-gc.zip

    Java虚拟机(JVM)是Java程序运行的基础,它的全称是Java Virtual Machine。在Java应用程序执行过程中,JVM负责管理内存,包括对象的分配、垃圾回收等关键任务。"jvm-full-gc.zip"这个压缩包很可能包含了关于JVM全GC...

    JVM--字节码和类的加载篇1

    "JVM--字节码和类的加载篇1"这个标题暗示了我们将深入理解JVM如何处理字节码以及类加载的过程。 在Java的Class文件中,数据类型扮演着基础的角色。描述符是用来表示各种数据类型的,包括基本数据类型如byte、char和...

    jvm -spark-优化

    与此同时,Java虚拟机(JVM)作为Spark运行的基础平台,在提升Spark性能方面扮演着关键角色。本文旨在探讨JVM与Spark之间的紧密联系,以及如何通过优化JVM来提高Spark的工作效率。 #### 什么是JVM? JVM(Java ...

    理论与实践结合 解密JVM-day03.rar

    JVM是Java平台的核心组成部分,它负责执行Java应用程序,提供了跨平台的运行环境。通过理解和掌握JVM的工作机制,开发者可以更好地优化代码性能,解决内存泄漏、性能瓶颈等问题。 首先,我们要了解JVM的内存模型,...

    pact-jvm-model_2.10-2.1.2.zip

    Gradle作为一个强大的构建自动化工具,它的灵活性使得Error Prone插件能够无缝地集成到现有的构建配置中,使得持续集成和持续交付过程更加稳健。 当我们结合Pact JVM模型和Gradle Error Prone插件时,我们可以创建...

    框架->java语言->jvm->os->汇编->硬件

    了解JVM包括内存模型(堆、栈、方法区等)、垃圾回收机制、类加载过程、性能优化等方面。 4. **操作系统(OS)**:OS是管理计算机硬件与软件资源的系统软件,如Windows、Linux、macOS等。理解OS意味着掌握进程管理...

Global site tag (gtag.js) - Google Analytics