快速入门JVM,只看这一篇就够了(一)

75 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第43天,点击查看活动详情

之前在其他平台发表过的文章,今天分享在掘金,跟大家一起学习~

1.JVM的整体结构

在这里插入图片描述 在运行时数据区中,方法区和堆区是线程共享的,而其他区域是线程独占的,这一点要注意。接下来,会有堆JVM的各个结构做更加深入的讲解。

2.回顾一下Java代码的执行流程

从宏观上看,Java源程序会被编译成字节码文件,然后字节码文件会在不同操作系统上的JVM上被执行,从而得到我们想要的结果。 从微观上看,会有很多复杂的过程,这篇博客写得非常清楚,推荐给大家:blog.csdn.net/sinat_33087…

3.JVM的生命周期

(1)虚拟机的启动

Java虚拟机的启动时通过引导类加载器(Bootstrap Class Loader)创建一个初始类(Initial Class)来完成的,这个类是由虚拟机的具体实现指定的。

(2)虚拟机的执行

一个运行中的Java虚拟机有一个清晰的任务:执行Java程序 程序开始执行时才运行,程序结束时就停止 执行一个所谓的Java程序时,真正执行的是一个叫做JVM的进程

(3)虚拟机的退出

有如下几种情况:

  • 程序正常执行结束
  • 程序在执行过程中遇到了异常或错误而终止
  • 由于操作系统出现错误而导致JVM进程终止
  • 某线程调用Runtime类或System类的exit方法,或Runtime类的halt方法,并且Java安全管理器也允许这次exit或halt操作
  • JNI规范描述了用JNI Invocation API来加载或卸载JVM时