第一章:java 虚拟机介绍

一、阐述

java 虚拟机(JVM)是一台执行java 字节码的虚拟计算机,拥有独立的运行机制,其运行的java字节码也未必由Java 语言编译而成。JVM平台的各种语言可以共享Java虚拟机带来的跨平台性、垃圾回收器、即时编译器。

二、作用

Java 虚拟机是二进制自己码的运行环境,负责装载字节码到其内部,解释/编译为对应平台上的机器指令执行。每一条Java指令,Java虚拟机规范中都有详细的定义,如怎么取操作数,怎么处理操作数,处理结果放在哪里。

特点:

    一次编译,处处运行

    自动内存管理

    自动垃圾回收功能


三、JVM整体结构

HotSpot VM 是目前高性能虚拟机的代表之一,采用解释器与即时编译器并存的架构。



四、Java代码执行流程

Java 源码(.java 文件)经过Java编译器编译后(编译器编译过程为:词法分析、语法分析、语法/抽象语法树、语义分析、字节码生成器等步骤)生成字节码文件(.class 文件)。

JVM将每一条要执行的字节码通过类加载器(ClassLoader)加载到内存中,再通过字节码校验器的校验,Java解释器翻译成对应的机器码,其中对于热点代码使用即时编译器(JIT)编译执行,最后在操作系统解释运行。



五、JVM的架构模型

Java编译器输入的指令集架构分两种,一种是基于栈的指令集架构,一种是基于寄存器的指令集架构。

两种结构的特点:

.基于栈式架构的特点

    1、设计和实现更加简单,适用于资源受限的系统;

    2、避开了寄存器的分配难题:使用零地址指令方式分配。

    3、指令流中的指令大部分是零地址指令,其执行过程依赖于操作栈。指令集更小,编译器容易实现。

    4、不需要硬件支持,可移植性更好,更方便实现跨平台。

.基于寄存器架构的特点

    1、典型的应用是x86的二进制指令集:如传统的PC以及Android的Davlik虚拟机。

    2、指令集架构则完全依赖硬件,可移植性差。

    3、性能优秀,执行效率高。

    4、花费更少的指令去完成一项操作。

    5、通常情况下,基于寄存器架构的指令集往往都是以一地址指令、二地址指令和三地址指令为主。而基于栈式架构的指令集却是以零地址指令为主。

.总结

    由于跨平台性的设计,Java的指令都是根据栈来设计的。不同平台CPU架构不同,所以不能设计为基于寄存器的架构。基于栈式架构有点是跨平台,指令集小,编译容易实现,缺点是性能下降,实现相同的功能需要更多的指令。

tips:idea查看字节码文件命令,进入字节码文件所在的目录执行 javap -v xxx.class


六、JVM的生命周期

.JVM启动

Java虚拟机的启动是通过引导类加载器创建一个初始类(initial class)来完成的,这个类是由虚拟机的具体实现指定的。

.JVM的执行

1.虚拟机运行的任务就是执行java程序。

2.程序开始执行时,jvm也一同运行,程序执行结束,jvm就停止运行。

3.执行一个Java程序时,本质上执行的是Java虚拟机的进程。

.JVM的退出

jvm退出的几种情况:

1、程序正常执行结束。

2、程序在执行过程中遇到异常或错误导致异常终止。

3、由于操作系统出现错误导致Java虚拟机进程终止。

4、调用Runtime类或者System类的exit方法,或者Runtime类的halt方法。

5、JNI(Java Native Interface)规范描述了用JNI Invocation API来加载或卸载Java虚拟机时,jvm也会退出。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,546评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,224评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,911评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,737评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,753评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,598评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,338评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,249评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,696评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,888评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,013评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,731评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,348评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,929评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,048评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,203评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,960评论 2 355

推荐阅读更多精彩内容