hello world 执行原理
2019-08-16 09:49:39来源:博客园 阅读 ()
hello world 执行原理
1 public class HelloWorld {
2 public static void main(String[] args)
3 {
4 String s ;
5 s = “Hello World!”; //定义字符串s
6 System.out.println(s);
7 }
8 }
↑↑↑是一个简单的java程序 HelloWorld
Java代码编译是由Java源码编译器来完成,流程图如下所示:
Java字节码的执行是由JVM执行引擎来完成,流程图如下所示:
程序执行分析如下:
① 使用 javac 对 HelloWorld.java 源文件进行编译为 HelloWorld.class 字节码文件。( jdk 开发工具箱中包含 javac 编译工具和 jre 运行时环境)
② 类的加载阶段,加载至JVM内存中,Main方法就是程序的入口,然后由JVM虚拟机来解释执行,在一些虚拟机的实现中,还会被JVM利用字节码解释器特定系统的机器码执行,从而提高执行效率。
java语言里负责解释执行字节码文件的是java虚拟机,既 JVM(java Virtual Machine)。(JVM是可运行java字节码文件的虚拟计算机)
③ 虚拟机通过类找到HelloWorld的主方法(程序的入口方法),访问权限为public(公有可用),虚拟机传递String[](字符串数组对象:空数组)类型参数的地址到主方法的args中去,并在栈区为args开辟内存空间,返回一个void的返回值;
JVM 将内存区域划分为 Method Area(Non-Heap)(方法区) ,Heap(堆) , Program Counter Register(程序计数器) , VM Stack(虚拟机栈,也有翻译成JAVA 方法栈的),Native Method Stack ( 本地方法栈 ),其中Method Area 和 Heap 是线程共享的 ,VM Stack,Native Method Stack 和Program Counter Register 是非线程共享的。
JVM 内存中线程是否共享示意图:
④ 定义一个String(标准类库中的)类型的变量(在栈区开辟空间)s,s的值不确定(垃圾值,编译无法通过);
⑤ s = “Hello World!”,对象“Hello World!”在方法区的常量数据区开辟空间,属性即为:Hello World!,方法即为:toString(),变量s存放对象“Hello World!”的地址;
⑥ 虚拟机找到标准类库中的System.class类并加载到内存中(即方法区的类代码区中),System.out为标准字节输出流对象(),并调用println()方法将变量s的值打印到屏幕上。
PS: 虚拟机调用主方法时会创建三个默认对象:System.out(标准字节输出流对象)、System.in(标准字节输入流对象)和System.error(标准字节出错流对象).
以上共涉及:
1个java文件:HelloWorld.java
4个class类: HelloWorld.class、String[].class、String.class、System.class
5个对象: “Hello World!”、String[]、System.out、System.in、System.error
2个变量:args、s
3个方法:main()、toString()、println()
原文链接:https://www.cnblogs.com/JMrLi/p/11139498.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 如何在Spring Boot应用启动之后立刻执行一段逻辑?本文详解 2020-06-05
- 如何在Spring Boot应用启动之后立刻执行一段逻辑 2020-06-02
- Spark SQL源码解析(五)SparkPlan准备和执行阶段 2020-05-27
- spring系列-springhello 2020-05-27
- Spring MVC必须知道的执行流程 2020-05-23
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash