Java虚拟机的什么周期
要理解Java虚拟机,你首先必须意识到,当你说“Java虚拟机”,可能指的是如下3种不同的东西:
· 抽象规范。
.一个具体的实现。
.一个运行中的虚拟饥实例。
Java虚拟机抽象规范仅仅是个概念.在Tlm U Mdh01m和FrankYcmn编著的<Thc Javuviduaj
Mach;ne spec小caLion》一书中详细地描述述了它。而该规范的具体实现,可能来自多个提供商,
并存在于多个平台上。它或者完全用软件实现,或者以硬件和软件相结合的方式米实现。当运行一个Java程序的同时,也就在运行了—个Java虚拟机实例。
每个Java程序都运行于某个具体的Java虚拟机实现的实例上。在本文中.可能表示上述三种情形之一。
一个运行时的Java虚拟机实例的大职就是:负责运行一个Java程序。当启动一个Java程序时,
一个虚拟机实例也就诞生了。当该程序关闭退出,这个虚拟机实促也就随之消失。如果公同一
台计算机上同时运行三个Java程序,将得到三个Java虚拟机实例。每个Java程序都运行于它自己
的Java虚拟机实例中。
Java虚拟机实例通过调用某个初始类的main()方法来运行一个Java程序。而这个main()
方法必须是公有的(public)、静态的(static),返回值为void。并且接受一个字符串数组作为参
数。任何拥有这样一个main()方法的类都可以作为Java程序运行的起点。
比如,考虑这样一个Java程序v它打印出传结它的命令行参数
- Class Echo{
- public static void main(String[] args){
- int len = args.length;
- for( int i = 0;i < length; ++i){
- System.out,print(args[i] +" ");
- }
- System.out.println();
- }
- }
必须(以某种与实现相关的方式)告诉Java虚拟机要运行的Java程序中初始类的名字,整个程序将从他的main()方法开始运行。
即要运行这个程序必须 :java Echo Greettings,Planet;
该命令中的 java就是告诉操作系统应该运行Sun java 2 SDK 的java虚拟机,"Echo”指出初始类的名字
Java程序初始化类中的main()方法,将作为该程序初始线程的起点,任何其他的线程都是由这个初始线程启动的。
在Java虚拟机内部有两种线程:守护线程与非守护线程。守护线程通常是出虚拟机自己使用的,比如执行垃圾收集任务的线程。但是,Java程序也可以把它创建的任何线程标记为守护线程。
而Java程序中的初始线程——就是开始于main()的那个,是非守护线程。
只要还有任何非守护线程在运行,那么这个Java程序也在继续运行(虚拟机仍然存活)。当该程序中所有的非守护线程部终止时,虚拟机实例将自动退出;假若安全管理器允许,程序本身也能够通过调用Runtime类或者system类的exit()方法来退出。
在前面的Echo程序中.它的maln()方法并未调用其他的线程。因此,当它打印完命令行参数后,main()方法返回。这就终止了该程序中惟一的非守护线程,最终导致虚拟机实例退出。
Java虚拟机的什么周期相关推荐
- java虚拟机的生命周期_深入理解Java虚拟机——JVM的生命周期
package test; public class JVMTestLife { public static void main(String[] args) { new Thread(new Run ...
- java虚拟机的生命周期
同一台计算机上同时运行三个java程序,则会得到三个java虚拟机实例.每个java程序都运行在自己的java虚拟机实例 . 在Java虚拟机内部有两种线程:守护线程与非守护线程.守护线程由自己使用的 ...
- 深入Java虚拟机读书笔记第五章Java虚拟机
Java虚拟机 Java虚拟机之所以被称之为是虚拟的,就是因为它仅仅是由一个规范来定义的抽象计算机.因此,要运行某个Java程序,首先需要一个符合该规范的具体实现. Java虚拟机的生命周期 一个运行 ...
- JAVA虚拟机体系结构
JAVA虚拟机的生命周期 一个运行时的Java虚拟机实例的天职是:负责运行一个java程序.当启动一个Java程序时,一个虚拟机实例也就诞生了.当该程序关闭退出,这个虚拟机实例也就随之消亡.如果同一台 ...
- java虚拟机及加载class文件的原理机制
2019独角兽企业重金招聘Python工程师标准>>> (点击获取更多资料的下载) java 虚拟机 2007年4月23日,14:18:00 | chenweicai ...
- java虚拟机加载类_java虚拟机之类加载机制(一)
一.首先先说一下java虚拟机的生命周期: 1.执行了system.exit(): 2.程序正常执行结束: 3.程序在执行过程中遇到了异常或错误而终止: 4.由于操作系统出现错误而导致java虚拟机进 ...
- Java虚拟机是什么
http://boy00fly.iteye.com/blog/1095263 要理解java虚拟机,你首先必须意识到,当你说"Java虚拟机"时,可能指的是如下三个不同的东西: 1 ...
- [看书笔记]《深入java虚拟机》——java体系结构(二)
java虚拟机的三种含义: - 抽象的规范 - 一个具体的实现 - 一个运行中的虚拟机实例 ---------------------java虚拟机的生命周期: java虚拟机实例的天职就是负责运行一 ...
- java虚拟机1.7_《Java虚拟机原理》7.1 精选 —— 总览
1.一个程序在 JVM 中运行的完整流程 java程序执行流程.JPG 说明: ① 类加载器把字节码加载到方法区 ② 方法区的字节码被 JVM new,在堆内存中生成字节码对象 ③ 字节码对象被 GC ...
最新文章
- 内含福利|CSDN 携手字节跳动:云原生Meetup北京站报名热烈启动,1月8日见!
- java中bean文件主要实现内容_JavaBean简单及使用
- java课程设计总结与思考,你掌握了多少?
- python猜拳游戏三局两胜制_python石头剪刀布小游戏(三局两胜制)
- 【NOIP2002】【codevs1098】均分纸牌
- PyTorch教程(九):损失函数与Loss的梯度
- matlab 32和64,在32或64位matlab上运行?
- 5G独立组网与非独立组网
- ITIL小故事-谁动了他的红包
- Latex beamer 学习总结
- oracle VM manager 3.1 试验备忘录
- yaml 文件格式语法
- 南京邮电大学计算机科学楼,南京邮电大学bbs
- CFA大起底:三百六十度无死角详解CFA到底是个啥?
- c语言程序网吧管理,C语言网吧计费系统(小项目).doc
- 问题记录1:网络和共享中心打不开的解决办法
- MyBatis在字段返回为null不返回字段
- java 检测表情符号_java 过滤表情符号
- 电子或通信领域当前的主流技术及其社会需求调查
- html 调用es2015模块,ES 2015 Modules
热门文章
- mongodb和mysql的对比_Mongodb与mysql语法比较
- c语言学习进阶-C语言程序实现生成指定区间指定个数随机数
- 开元弧焊机器人编程_【数据】2019年中国焊接机器人市场发展现状与趋势分析...
- (六)构建MLOps模型API
- Vue学习笔记(二) —— 组件开发
- Emulator 29.2.12 稳定版发布,启用 Google Maps UI
- Chrome 将内置 QR 扫码共享页面功能
- Maven命令安装本地jar包到本地仓库
- JS replace()方法替换变量(可以对变量进行全文替换)
- 笔记本电脑下载matlab没有图标,win7系统安装matlab后找不到图标打不开如何解决...