要理解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它打印出传结它的命令行参数

[java] view plaincopy
  1. Class Echo{
  2. public static void main(String[] args){
  3. int len = args.length;
  4. forint i = 0;i < length; ++i){
  5. System.out,print(args[i] +" ");
  6. }
  7. System.out.println();
  8. }
  9. }

必须(以某种与实现相关的方式)告诉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虚拟机的什么周期相关推荐

  1. java虚拟机的生命周期_深入理解Java虚拟机——JVM的生命周期

    package test; public class JVMTestLife { public static void main(String[] args) { new Thread(new Run ...

  2. java虚拟机的生命周期

    同一台计算机上同时运行三个java程序,则会得到三个java虚拟机实例.每个java程序都运行在自己的java虚拟机实例 . 在Java虚拟机内部有两种线程:守护线程与非守护线程.守护线程由自己使用的 ...

  3. 深入Java虚拟机读书笔记第五章Java虚拟机

    Java虚拟机 Java虚拟机之所以被称之为是虚拟的,就是因为它仅仅是由一个规范来定义的抽象计算机.因此,要运行某个Java程序,首先需要一个符合该规范的具体实现. Java虚拟机的生命周期 一个运行 ...

  4. JAVA虚拟机体系结构

    JAVA虚拟机的生命周期 一个运行时的Java虚拟机实例的天职是:负责运行一个java程序.当启动一个Java程序时,一个虚拟机实例也就诞生了.当该程序关闭退出,这个虚拟机实例也就随之消亡.如果同一台 ...

  5. java虚拟机及加载class文件的原理机制

    2019独角兽企业重金招聘Python工程师标准>>> (点击获取更多资料的下载) java 虚拟机 ‎2007‎年‎4‎月‎23‎日,‏‎14:18:00 | chenweicai ...

  6. java虚拟机加载类_java虚拟机之类加载机制(一)

    一.首先先说一下java虚拟机的生命周期: 1.执行了system.exit(): 2.程序正常执行结束: 3.程序在执行过程中遇到了异常或错误而终止: 4.由于操作系统出现错误而导致java虚拟机进 ...

  7. Java虚拟机是什么

    http://boy00fly.iteye.com/blog/1095263 要理解java虚拟机,你首先必须意识到,当你说"Java虚拟机"时,可能指的是如下三个不同的东西: 1 ...

  8. [看书笔记]《深入java虚拟机》——java体系结构(二)

    java虚拟机的三种含义: - 抽象的规范 - 一个具体的实现 - 一个运行中的虚拟机实例 ---------------------java虚拟机的生命周期: java虚拟机实例的天职就是负责运行一 ...

  9. java虚拟机1.7_《Java虚拟机原理》7.1 精选 —— 总览

    1.一个程序在 JVM 中运行的完整流程 java程序执行流程.JPG 说明: ① 类加载器把字节码加载到方法区 ② 方法区的字节码被 JVM new,在堆内存中生成字节码对象 ③ 字节码对象被 GC ...

最新文章

  1. 内含福利|CSDN 携手字节跳动:云原生Meetup北京站报名热烈启动,1月8日见!
  2. java中bean文件主要实现内容_JavaBean简单及使用
  3. java课程设计总结与思考,你掌握了多少?
  4. python猜拳游戏三局两胜制_python石头剪刀布小游戏(三局两胜制)
  5. 【NOIP2002】【codevs1098】均分纸牌
  6. PyTorch教程(九):损失函数与Loss的梯度
  7. matlab 32和64,在32或64位matlab上运行?
  8. 5G独立组网与非独立组网
  9. ITIL小故事-谁动了他的红包
  10. Latex beamer 学习总结
  11. oracle VM manager 3.1 试验备忘录
  12. yaml 文件格式语法
  13. 南京邮电大学计算机科学楼,南京邮电大学bbs
  14. CFA大起底:三百六十度无死角详解CFA到底是个啥?
  15. c语言程序网吧管理,C语言网吧计费系统(小项目).doc
  16. 问题记录1:网络和共享中心打不开的解决办法
  17. MyBatis在字段返回为null不返回字段
  18. java 检测表情符号_java 过滤表情符号
  19. 电子或通信领域当前的主流技术及其社会需求调查
  20. html 调用es2015模块,ES 2015 Modules

热门文章

  1. mongodb和mysql的对比_Mongodb与mysql语法比较
  2. c语言学习进阶-C语言程序实现生成指定区间指定个数随机数
  3. 开元弧焊机器人编程_【数据】2019年中国焊接机器人市场发展现状与趋势分析...
  4. (六)构建MLOps模型API
  5. Vue学习笔记(二) —— 组件开发
  6. Emulator 29.2.12 稳定版发布,启用 Google Maps UI
  7. Chrome 将内置 QR 扫码共享页面功能
  8. Maven命令安装本地jar包到本地仓库
  9. JS replace()方法替换变量(可以对变量进行全文替换)
  10. 笔记本电脑下载matlab没有图标,win7系统安装matlab后找不到图标打不开如何解决...