`
jandroid
  • 浏览: 1886663 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

【Java 虚拟机系列知识:整理一】java虚拟机的生命周期

 
阅读更多

【Java 虚拟机系列知识:整理一】java虚拟机的生命周期

(内容整理自《深入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它打印出传结它的命令行参数


必须(以某种与实现相关的方式)告诉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虚拟机(原书第2版).pdf【附光盘内容】

    5.2 java虚拟机的生命周期 5.3 java虚拟机的体系结构 5.3.1 数据类型 5.3.2 字长的考量 5.3.3 类装载器子系统 5.3.4 方法区 5.3.5 堆 5.3.6 程序计数器 5.3.7 java栈 5.3.8 栈帧 ...

    Java虚拟机和Java程序的生命周期?

    类加载器分为:Java虚拟机自带的加载器和用户自定义的类加载器; Java虚拟机自带的类加载器包括:启动类加载器,扩展类加载器,系统类加载器三种。 用户自定义的类加载器是ClassLoader类的实例,通过它来定制类的...

    java虚拟机的详细原理

    一、什么是Java虚拟机 二、Java虚拟机的生命周期 三、Java虚拟机的体系结构

    Java虚拟机

    Java虚拟机的生命周期 Java虚拟机的体系结构 类加载器 执行引擎

    深入Java虚拟机(原书第2版)及书中源代码

    第1章 Java体系结构介绍 第2章 平台无关 第3章 安全 第4章 网络移动性 第5章 Java虚拟机 第6章 Java class文件 ...附录D Java虚拟机的一个模拟:“Slices of Pi” 原码中的小程序是学习jvm非常好的工具

    深入JAVA虚拟机第二版.pdf 目录

    第5章 Java虚拟机 第6章 Java class文件 第7章 类型的生命周期 第8章 连接模型 第9章 垃圾收集 第10章 栈和局部变量操作 第11章 类型转换 第12章 整数运算 第13章 逻辑运算 第14章 浮点运算 第15章 对象和数组 第16...

    深入Java虚拟机

    5.2 Java虚拟机的生命周期 5.3 Java虚拟机的体系结构 5.3.1 数据类型 5.3.2 字长的考量 5.3.3 类装载器子系统 5.3.4 方法区 5.3.5 堆 5.3.6 程序计数器 5.3.7 Java栈 5.3.8 栈帧 ...

    java虚拟机 ppt

    java虚拟机 classload机制,保护域,访问控制,生命周期

    java虚拟机、进程周期,类加载1器和类使用要点简述

    类加载器 (类加载器使用双亲委派模型,为的是避免类的重复加载) 1、Java虚拟机与进程的生命周期 2、类的加载、连接与初始化 3、Java程序对类的使用可以分为两种:

    java-jvm虚拟机原理.ppt

    详细介绍了jvm生命周期和体系结构及垃圾回收机制

    java虚拟机(jvm)介绍以及相关参数设置与调优

    虚拟机的相关参数设置与调优,介绍了一些jvm的体系结构,垃圾回收的方法,java对象的生命周期与分代。

    深入理解JVM-java虚拟机栈.docx

    Java虚拟机栈也是线程私有的,它的生命周期与线程相同(随线程而生,随线程而灭) 2. 如果线程请求的栈深度大于虚拟机所允许的深度,将抛出StackOverflowError异常; 如果虚拟机栈可以动态扩展,如果扩展时无法申请...

    Java虚拟机JVM类加载初始化

    由Java虚拟机自带的默认加载器(根加载器、扩展加载器、系统加载器)所加载的类在JVM生命周期中始终不被卸载。所以这些类的Class对象(我称其为实例的模板对象)始终能被触及!而由用户自定义的类加载器所加载的类会...

    深入java虚拟机第二版

    5.2 Java虚拟机的生命周期 5.3 Java虚拟机的体系结构 5.3.1 数据类型 5.3.2 字长的考量 5.3.3 类装载器子系统 5.3.4 方法区 5.3.5 堆 5.3.6 程序计数器 5.3.7 Java栈 5.3.8 栈帧 5.3.9 本地方法...

    深入java虚拟机中文第2版

    本书共分20章,第1-4章解释了Java虚拟机的体系结构,包括Java栈、堆、方法区、执行引擎等;第5-20章深入描述了Java技术的内部细节,包括垃圾收集、Java安全模型、Java...附录D Java虚拟机的一个模拟:“Slices of Pi”

    深入JAVA虚拟机(第2版)

    5.2 Java虚拟机的生命周期 5.3 Java虚拟机的体系结构 5.3.1 数据类型 5.3.2 字长的考量 5.3.3 类装载器子系统 5.3.4 方法区 5.3.5 堆 5.3.6 程序计数器 5.3.7 Java栈 5.3.8 栈帧 ...

    21天学会Java之(Java SE第四篇):Java虚拟机、垃圾回收机制

    文章目录Java虚拟机(JVM)JVM的基本结构类加载机制类的生命周期类加载器的种类类加载机制运行时数据区(内存分析)垃圾回收机制新生代(Young Generation)老年代(Old Generation)元空间(Meta Space) Java虚拟机...

    深入解析ANDROID虚拟机

    全书分为13个章节,分别讲解了Android系统的基础知识、Android系统的结构和核心框架、Java虚拟机和Dalvik虚拟机的知识、实现程序编译和调试、Dalvik的运作流程、DEX优化和安全管理、Android虚拟机生命周期管理和内存...

    Java支持库2.0#0版

    由“Java虚拟机”负责真实Java虚拟机的生命周期管理,而“Java本地接口”则提供Java类库的访问接口。使用时,可直接通过“Java本地接口”的各类方法访问Java类库(即与“Java虚拟机”通信),由支持库本身自动完成...

Global site tag (gtag.js) - Google Analytics