Java虚拟机的运行过程 西安尚学堂
上面对虚拟机的各个部分进行了比较详细的说明,下面通过一个具体的例子来分析它的运行过程。
虚拟机通过调用某个指定类的方法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与其它类型进行链接然后初始化。链接包含三个阶段:检验,准备和解析。检验检查被装载的主类的符号和语义,准备则创建类或接口的静态域以及把这些域初始化为标准的默认值,解析负责检查主类对其它类或接口的符号引用,在这一步它是可选的。类的初始化是对类中声明的静态初始化函数和静态域的初始化构造方法的执行。一个类在初始化之前它的父类必须被初始化。整个过程如下:
Java虚拟机的运行过程 西安尚学堂相关推荐
- Java常用第三方库大全西安尚学堂
Java常用第三方库大全 一.JAVA核心扩展 JAVA的标准库虽然提供了那些最基本的数据类型操作方法,但仍然对一些常见的需求场景,缺少实用的工具类.而另一些则是JAVA标准库本身不够完善,需要第三方 ...
- 西安尚学堂练习09.17|Java编程笔试面试题
下列哪些类型能被throw语句抛出? A. Error B. Exception C. Throwable D. Object [解]注意Error也是可以被throw的,只是通常Error出现程序就 ...
- JVM学习(1)——通过实例总结Java虚拟机的运行机制(转)
俗话说,自己写的代码,6个月后也是别人的代码--复习!复习!复习!涉及到的知识点总结如下: JVM的历史 JVM的运行流程简介 JVM的组成(基于 Java 7) JVM调优参数:-Xmx和-Xms ...
- 学习Java第一天:1、Java是什么?2、面向对象的编程思想的特点 3、Java的开发工具 4、安装JDK和配置环境变量 5、Java程序的运行过程 6、Java语言的特点
目录 1.Java是什么? 2.面向对象的编程思想的特点 3.Java的开发工具 4.安装JDK和配置环境变量 5.Java程序的运行过程 6.Java语言的特点 1.Java是什么? java是一门 ...
- 虚拟主机可以运行java_下面哪种类型的文件可以在Java虚拟机中运行( ).
下面哪种类型的文件可以在Java虚拟机中运行( ). 答:.class 舌尖前送气清塞擦音是 答:c 中国大学MOOC: 已知 [X]原=10101100,[Y]补=11000110, 求 [X+Y] ...
- 什么是Java 西安尚学堂
如果要向一无所知的人解释Java是什么还是比较有难度的,是的,它是一门编程语言,但发展到今天,Java一词远程超出了语言的定义,具体来说,Java是一个包括虚拟机环境,与C语言类似,包括库和支持软件, ...
- 西安尚学堂学员对于新手学习java的一些建议
学习Java是一个循环渐进,有始有终,按部就班,脚踏实地的过程.在基础编程中,从Java入门到Java网络编程这一段是非常重要的,除了gui界面开发,其中数Java的面象对像和Java的数据结构最为重 ...
- Java字符串池西安尚学堂
String a = "Hello"; String b = "Hello"; String c = new String("Hello") ...
- 西安尚学堂Java 服务端入门(资料推荐)
现在互联网上资源丰富,Java 学习并不难.贴个 Java 服务端入门和进阶指南,是给新人入门用的,包括了学习目标.需要掌握的技能和参考资料,并规划了学习阶段和时间,希望帮助到大家. 前言 关于如何获 ...
最新文章
- MATLAB常用快捷键组合
- SIFT: This algorithm is patented and is excluded in this configuration的解决办法
- js中当等于最小值是让代码不执行_网页中JS函数自动执行常用三种方法
- 汲取Linux灵感 Pivotal开源大数据套件
- java 单例 并发_完美的单例实现(The Perfect Singleton)
- BIM工程信息管理系统搭建-系统功能需求
- 获取ASP.NET MVC中的完整操作URL [重复]
- 开课吧课堂之何时调用构造函数
- Session超时设置
- js下载视频(mp4格式)
- 修改U盘、移动硬盘时提示目标文件夹访问被拒绝的问题解决思路
- Aria2 YAAW 使用说明
- win10以太网未识别的网络的解决方法
- 线上知识付费潮流中的青年人:寻找消费与求知的平衡点
- FITC-WFA荧光素标记紫藤凝集素(WFA,WFL)
- markdown语法之表格
- 人工智能语言,我们的骄傲
- mtd驱动分析-硬件驱动层
- 华为B199刷机包 官方MEUI 2.0 B190精简省电版
- Linux音频驱动之五:UDA1341芯片操作接口
热门文章
- 就业信息追踪|基于Springboot+Vue开发实现就业信息追踪系统
- java之静态代理模式
- C# Cookies设置和读取
- 计算机思维是计算机科学家独有的思维方式,什么是计算机思维计算机思维的分析(2)...
- 解决Jlink V6.54C:The connected J-Link is defective问题
- Sharding-JDBC 原理以及相关入门
- pycharm 配置局域网访问,局域网无法访问解决办法
- 攻防世界re:maze
- 法国Adidas搞怪营销:“绑架”消费者来跑步
- ActiveReports 大数据分析报告:2018中国电影再次迎来黄金时代