java大批量文件对比_Java 虚拟机基础原理:功能,内存管理,类的加载机制,分析字节码执行过程...

学习 JVM 的原因

  • JVM -- Java Virtual Machine,Java 虚拟机是一个虚拟的体系,它拥有目前最前沿的垃圾回收算法实现。虽然 JVM 也有一些局限性,但学习它之后,在遇到其他基于“虚拟机”的语言时,便能够融会贯通。

  • 对 Java 高级工程师来说,JVM 是必须掌握的技能点。

  • 在面试和求职过程中,经常会遇到 JVM 相关的知识。

JVM 的功能

JVM 和操作系统
  • 使用 C++ 开发的程序,编译成二进制文件后,就可以直接执行了,因为操作系统能够识别它。但是,使用 javac 编译 Java 程序成为 .class 文件后,还需要 Java 虚拟机识别 .class 后缀的文件,并且解析它的指令,然后才会被操作系统识别从而能调用操作系统上的函数。

  • JVM 解释的是类似于汇编语言的字节码,需要一个抽象的运行时环境。同时,这个虚拟环境也需要解决字节码加载、自动垃圾回收、并发等一系列问题。

  • “JVM” 像是 “操作系统”;“Java 字节码” 像是 “汇编语言”。

  • Java 底层虽然比 C++ 要复杂,但因为有了 JVM 这个抽象层之后,起到了跨平台的作用,即 “一次编译,处处运行”。

    • 在 Maven 仓库下载同一版本的 jar 包就可以到处运行,不需要在每个平台上再编译一次。

    • JVM 的扩展语言,比如 ClojureJRubyGroovy 等,编译到最后都是 .class 文件,Java 语言的维护者,只需要控制好 JVM 这个解析器,就可以将这些扩展语言无缝的运行在 JVM 之上了。

087b11048a82f4f951d0adb0a1397add.png

  • 对比 C++ 和 Java 的生产加载过程

10f9f10d327ec187025f6c2c60ad8df0.png

d818fdb815d549af3355998f99cc58f8.png

JVM 和 JRE、JDK
  • JRE -- Java Runtime Environment,Java 的运行时环境 =  JVM 标准 + 基础类库

  • JDK -- Java Development Kit,Java 开发工具包 = JRE + 开发工具

b9042a84241d486dfcee149e10704d33.png

JVM 规范和 Java 语言规范
  • The Java Virtual Machine Specification -- JVM 规范:定义了 .class 文件的结构、加载机制、数据存储、运行时栈等诸多内容,最常用的 JVM 规范实现就是 Hotspot VM

  • The Java Language Specification -- Java 语言规范:定义 Java 语法规范,比如 switch、for、泛型、lambda 等。

  • 两个规范通过 Java 的字节码连接在一起,因为 Java 程序最终都会编译成字节码。

Java 程序的执行过程
  • Java 程序是文本格式的。比如下面的 HelloWorld.java,它遵循的就是 Java 语言规范。其中,它调用了 System.out 等模块,也就是 JRE 里提供的类库。

public class HelloWorld {

    public static void main(String[] args) {
        System.out.println("Hello World");
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值