JVM简介

在这里插入图片描述
虚拟机就是一台虚拟的计算机,分为:
系统虚拟机:Visula Box,VMware
程序虚拟机: JVM
 在JVM上执行的指令称为java字节码指令.
 java技术的核⼼就是java虚拟机(JVM,Java Virtual Machine),因为所有的java程序都运⾏在java
虚拟机内部。

优势

 跨平台性、优秀的垃圾回收器,以及可靠的即时编译器。

作⽤

java虚拟机就是⼆进制字节码的运⾏环境,负责装载字节码到其内部,解释/编译为对应平台上的机器指令执⾏。每⼀条java指令,java虚拟机规范中都有详细定义,如怎么取操作数,怎么处理操作数,处理结果存储在哪⾥。

特点

  • ⼀次编译,到处运⾏
  • ⾃动内存管理(内存分配)
  • ⾃动垃圾回收功能(内存回收)

JVM的位置

在这里插入图片描述
JVM是运行在操作系统之上的,与硬件没有直接的交互。
在这里插入图片描述

一次编译,到处运行
在这里插入图片描述
跨平台
在这里插入图片描述
随着java7的正式发布,java虚拟机的设计者们通过JSR-292规范基本实现:在java虚拟机平台上运⾏⾮java语⾔编写的程序。
java虚拟机根本不关⼼运⾏在其内部的程序是使⽤何种编程语⾔编写的,它只关⼼“字节码”⽂件。也就是java虚拟机拥有语⾔⽆关性,并不会单纯地与java语⾔“终身绑定”,只要其他编程语⾔的编译结果满⾜并包含java虚拟机的内部指令集、符号表以及其他的辅助信息,它就是⼀个有效的字节码⽂件,就能被虚拟机所识别并装载运⾏。"java虚拟机"正在向"多语言虚拟机"方向发展

字节码

 是⼀种中间状态(中间码)的⼆进制代码(⽂件),需要直译器转译后才能成为机器码
javac:命令将其编程成字节码⽂件
java:命令来执⾏class字节码⽂件
javap:是将字节码进⾏反编译(与javac对应),可以查看java编译器为我们⽣成的字节码。
 我们平时说的java字节码指的是⽤java语⾔编译成的字节码。准确的说任何能在jvm平台上执⾏的字节码格式都是⼀样的。所以应该统称为: jvm字节码。
  不同的编译器,可以编译出相同的字节码⽂件,字节码⽂件也可以在不同的jvm上运⾏。 java虚拟机与java语⾔并没有必然的联系,它只与特地的⼆进制⽂件格式-class⽂件格式所关联,class⽂件中包含了java虚拟机指令集(或者称为字节码,Bytecodes)和符号表,还有⼀些其他辅助信息。

HotSpot VM

HotSpot 是较新的 JVM, ⽤来替代 JIT (Just in Time, 即时编译), 可以⼤⼤提⾼ Java 的运⾏性能, 即:
Java 起初是把源代码编译为 .class 格式的字节码在虚拟机上执⾏, 速度较慢;
HotSpot 将常⽤的部分代码编译为本地(native)代码, 显著提⾼了性能。
其他的VM: JRockit VM,IBM J9 VM,SUN Classic VM等等。

➜ ~ java -version
java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张嘉書

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值