Java程序执行流程

这篇具有很好参考价值的文章主要介绍了Java程序执行流程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Java程序执行的整个过程可以分为三个阶段:编译、加载和运行

1.编译

Java程序的源代码需要经过编译器(例如javac)的编译,将其转换成字节码(即.class文件),这个过程称为编译。编译器会对源代码中的语法进行检查和优化,并生成可在JVM上运行的字节码文件。

2.类加载

当Java程序启动时,JVM就会创建一个类加载器(ClassLoader)树来加载所有的类。类加载器负责在运行时将类的字节码文件加载到内存中,并创建对应的Class对象。类加载器会按照一定的顺序加载类,通常是先由系统类加载器(AppClassLoader)加载本地路径下的类,如果找不到则由扩展类加载器(ExtClassLoader)加载,最后由启动类加载器(BootstrapClassLoader)加载JRE中的核心类。

类加载器会执行以下三个步骤:

  • 装载:查找并加载字节码文件;
  • 链接:对字节码文件进行验证、准备和解析;
  • 初始化:对类进行初始化,包括执行类的static块(如果有)和类变量的赋值。

3.执行

在加载完成后,JVM会执行main方法。具体执行过程如下:

  • 创建主线程;
  • 将main方法所在类的字节码文件装载到JVM内存中;
  • 执行该类的static代码块(如果有);
  • 如果该类有父类,依次执行其父类的static代码块(如果有);
  • 执行main方法。

在执行main方法时,JVM将会按照程序员编写的语句依次执行,在执行完毕后,程序结束。

4.垃圾回收

在Java程序执行过程中,JVM需要管理内存,包括分配、使用和释放内存。当一个对象不再被引用时,JVM会通过垃圾回收机制将其回收并释放内存。垃圾回收器会定期扫描堆内存中的对象,标记不再被引用的对象为垃圾对象,然后清理掉这些对象所占用的内存空间。

有关垃圾回收机制可以参考我的另一篇博客:JVM内存回收机制_源末coco的博客-CSDN博客文章来源地址https://www.toymoban.com/news/detail-477366.html

到了这里,关于Java程序执行流程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ST-Link下载程序后需要复位才可以执行程序

    1、使用正点原子的阿波罗开发板(STM32F429),他原本有一个ST-Link V2但是需要插到20脚的卡座中,我觉得插拔有些费劲。(20脚的可以正常下载和调试)于是就将原来的ST-Link用杜邦线将ST-Link和开发板中对应的引脚进行连接但是出现了奇怪的现象。 现象:       在用MDK(KEIL)

    2024年02月14日
    浏览(42)
  • C语言——可执行程序过程

    我们在编写代码的时候,不知道大家是否和一开始的我一样,在运行代码的时候就直接CTRL+F5运行了呢??一开始,我只知道会生成一个.exe的可执行文件,中间的原理我一点也不知道。 今天就由我带领大家对生成可执行的文件有更深的一层理解。  程序的翻译环境和执行环境

    2024年02月13日
    浏览(37)
  • “可以黑掉整个宇宙”的Metasploit Framework

    0x01、 简述 Metasploit Framework(MSF)是一款开源安全漏洞检测工具,他带有数千个已知的软件漏洞,目前人在持续更新。Metasploit可以用来信息收集、漏洞探测、漏洞利用等渗透测试的全流程,被安全社区冠以“可以黑掉整个宇宙”之名。在普通的Linux系统下需要自行下载安装,而

    2024年02月15日
    浏览(41)
  • cmake使得工程中每个文件可以单独作为一个可执行程序

    通过cmake管理一个工程,工程中的src文件夹里面放了很多cpp源文件,每个源文件里面都包含一个main方法,这个工程主要是用于测试一些方法,因此希望每个源文件都可以单独编译并且调试。 写法如下,就是循环查找src路径下的cpp文件,然后对每个cpp文件建立一个可执行程序,

    2024年04月17日
    浏览(35)
  • java实现连接远程服务器,并可以执行shell命令

    你可以使用Java中的SSH库来连接远程服务器并执行shell命令。下面是一个简单的示例代码: 请注意替换 your_host , your_username , your_password 和 your_shell_command 为实际的远程服务器信息和要执行的shell命令。该示例代码使用JSch库来建立SSH连接并执行命令。

    2024年01月20日
    浏览(62)
  • C语言——程序执行的三大流程

    顺序 : 从上向下, 顺序执行代码 分支 : 根据条件判断, 决定执行代码的分支 循环 : 让特定代码重复的执行

    2024年02月10日
    浏览(29)
  • 利用VS打包生成可执行程序流程

    本文给出利用 “Visual Studio 2022” 打包C#程序的有关流程,以供参考。 (此部分作为备忘,打包流程参见 “打包步骤” 部分) 打包前准备工作: 1、将原始项目拷贝至项目集合对应文件夹,并修改名称; 2、对解决方案名称进行重命名,使其与文件夹命名一致(其中 . = _);

    2024年02月07日
    浏览(35)
  • 在Clion开发工具上使用NDK编译可以在安卓上执行的程序

            因为工作需要,我要将一份C语言代码编译成可执行文件传送到某安卓系统里执行。         众所周知,使用ndk编译代码有三种使用方式,分别是基于 Make 的 ndk-build、CMake以及独立工具链。以前进行ndk编程都是使用ndk-build进行的,新建jni目录,编写Android.mk和A

    2023年04月12日
    浏览(36)
  • new Vue后整个的流程

    在使用 Vue.js 创建一个应用程序时,以下是整个流程的概述: 引入 Vue.js 库 :在 HTML 文件中引入 Vue.js 库,可以通过 CDN 引入或使用本地文件。 创建根组件 :在 JavaScript 文件中创建一个根组件,并实例化一个 Vue 对象。这个根组件会包含整个应用程序的其他组件。 配置根组件

    2024年02月09日
    浏览(25)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包