总结jvm和java程序的启动

本文介绍了Java程序、Tomcat和Spring Boot的启动流程。普通Java程序启动时,JVM创建类加载器加载运行环境和类,执行main方法;Tomcat通过脚本追加依赖jar包,执行Bootstrap类main方法创建容器;Spring Boot用原始main方法启动,加载类并创建Tomcat容器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.首先是普通的java程序启动
比如:java person.class 或者在IDE开发工具中右键启动
(1)首先启动jvm(jvm是c语言写的或其他),jvm启动后会创建启动类加载器,去加载java程序需要的运行环境(rt.jar等等),加载完运行环境后,再创建 Launcher 启动器,由它去创建扩展类加载器和应用类加载器,并且应用类加载器把扩展类加载器当作父类,扩展类加载指定目录的扩展jar包,应用类加载器加载类路径下的class

(2)应用类加载器加载了类路径下的person.class后,找到其main方法执行

2.tomcat启动
tomcat启动所依赖的jar包,包括 bootstrap.jar、tomcat-juli.jar
(1)由于tomcat的启动是通过脚本来启动的,脚本所做的最重要的是就是在CLASSPATH后追加Bootstrap.jar、Tomcat-juli.jar
(2)解析脚本参数,执行Bootstrap类的main方法,并传入相应的参数
(3)java命令执行Bootstrap类的main方法,传入参数
(4)执行Bootstrap类的main方法,就是相当于执行了tomcat的这个java程序,然后创建tomcat程序中的各种模块组件,构成一个tomcat容器(servlet容器).

3.springboot的启动
(1)springboot采用原始的java程序main方法启动(其实所有java程序启动就是从main方法开始,包括tomcat也一样,只是在tomcat中我们只要写servlet就行)
(2)springboot启动就是,jvm启动创建自己的类加载器,应用类加载器加载类路径下的类,执行到tomcat的代码,创建tomcat容器

总的来说,jvm进程包含着java代码写的程序,jvm进程就是解析java代码给本地系统
jvm启动后变成内存中的一个进程,然后,这个进程创建自己的类加载器去加载不同目录下的类或着jar包,然后运行这些java写的代码

多个jvm进程就是多个java程序启动

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值