JVM简介

JVM简介

 Java虚拟机是一台执行java字节码的虚拟计算机,它拥有独立的运行机制,它运行的java字节码,也未必是java语言编译而成。
 它负责加载字节码到其内部,解释/编译成对应平台上的机器指令,每一条java指令,Java虚拟机规范中都有详细的定义,比如:如何取操作数,
 如何处理操作数,处理结果放在哪里等等。
 Java是跨平台的语言,虚拟机是跨语言的平台
  • 一次编译,到处运行
  • 自动内存管理
  • 自动垃圾回收

1.1 jvm位置

 jvm是运行再操作系统之上的,不会直接与硬件层面有交互。

在这里插入图片描述
在这里插入图片描述

1.2jvm的整体结构

HotSpot 虚拟机时目前市面上高性能虚拟机的代表作之一(基于栈的指令集架构模式),它采用解释器和即时编译器并存的架构,性能,已经达到了和C/C++基本无差距的地步。

基于栈的指令集特点:

 设计和实现更简单
 适用于资源受限的系统 避开了寄存器的分配难题,使用零地址指令的方式分配,
 指令集更小(但是指令会更多) 编译器容易实现 
 不需要硬件支持,可移植性更好,更好的实现了跨平台

基于寄存器的指令集特点:

  典型的x86的二进制指令集,比如传统的pc或者是Davlik虚拟机
  指令集架构完全依赖硬件,可移植性比较差
  指令集基本都是一地址指令,二地址指令,三地址指令等
  完成一项操作的指令更少
  性能更优秀,执行效率更高

总结:
由于跨平台性的设计,java的指令都是基于栈来设计的,优点是跨平台,指令集小,编译容易实现,缺点是性能下降,实现同样的功能需要更多的指令。

在这里插入图片描述

1.3jvm的生命周期

1:启动

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

2:执行

一个运行的虚拟机有一个清晰的任务:执行java程序
程序执行的时候开始运行,程序结束就结束
执行java程序的过程,真正在执行的是一个叫做java虚拟机的进程

3:退出

如下几种情况:
程序正常执行结束
程序执行过程中遇到异常或者错误而终止
由于操作系统出现错误导致java虚拟机进程终止
某线程调用Runtime类或者是System的exit方法等等

1.4不同厂商的虚拟机

有很多,大概了解下:比如最早sun公司的Classic,IBM的J9,以及JRockit,后续主流的还是以Hotspot为主要切入点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值