【JVM学习笔记1】JVM与Java体系结构

JVM与Java体系结构

一、JVM的重要性

  1. ​ 面试,大厂必备;
  2. ​ 中高级程序员的必备:项目管理、调优的需要;
  3. ​ 极客精神:垃圾回收算法、JIT、底层原理。

Java相较于C/C++自带安全检查、垃圾回收、动态内存分配,入门学习起来相对更简单一些,工作以后必然要面临很多问题,学习JVM还是很有必要的。

二、Java与JVM

  • Java,跨平台的语言:write once,run anywhere。

  • JVM,跨语言的平台:JVM只关注字节码文件,任何语言编写的程序通过编译器变成字节码文件都可以在JVM上运行。

  • Java和JVM没有必然的联系!

  • **虚拟机分两类:**系统虚拟机和程序虚拟机。系统虚拟机是对物理计算机的仿真,例如Visual Box,VMware;程序虚拟机为执行单个计算机程序而设计,例如JVM。

  • JVM整体结构简图

JVM整体结构

  • java代码执行流程

Java代码执行流程

  • 指令集架构:

    • 基于栈的指令集架构:零地址指令方式分配,指令集更小,不需要硬件支持,可移植性更好,更容易跨平台。典型:JVM

    • 基于寄存器的指令集架构:依赖硬件,性能更好,指令集更大。典型:传统的PC、Android的Davlink虚拟机。

    • 指令集的大小深刻影响了执行指令的多少,就像没有学会乘法以前,55*10就是将55累加十次(也可以将10累加55次,更耗费资源),有了乘法以后,执行一次即可,时间复杂度由O(n) --> O(1)。

  • JVM的生命周期:启动、执行、退出。

  • 一些比较出名的JVM

    • 使用最多的三个JVM

      • HotSpot:属于Oracle,平时使用默认的虚拟机,英语即热点代码探测技术,编译器和解释器协同工作,面试中一般没有说明问的都是HotSpot。

      • JRockit:属于Oracle,最快的JVM,没有解释器,只有编译器,一般用在服务器上。

      • J9:属于IBM,号称最快的JVM,因为专门对IBM的硬件做了适配,所以在IBM的硬件上最快,但是不适用于其他硬件(类似苹果的IOS,针对硬件设计的系统)。

      • 可以看到,无论是什么样的架构,如果只考虑一个平台,性能都是可以做到非常高的,基于寄存器的指令集架构如是,J9也如是。但是太依赖硬件就像把鸡蛋放到一个篮子里,如果能像苹果一样天时、地利、人和也还好,但大多都会像诺基亚、柯达这样的公司,很容易压错宝。不得不说,Java的成功是源自其跨平台特性,不能做专才,做全才也不失为走向成功的一条康庄大道。

    • 一些值得了(chui)解(bi)的JVM

      • Sun Classic VM:Java 1.0的产物,世界第一款商用JVM,只有解释器,不能和JIT一同运行,HotSpot内置了该虚拟机。
      • Exact VM:Java 1.2出现,可以热点探测,可以让编译器和解释器混合工作,然而很快HotSpot出现,该虚拟机便没有用武之地。
      • KVM和CDC/CLDC HotSpot:早期用于Java ME产品线上的虚拟机,用于手机上,目前市场基本没有,仅用于老人机、功能机,早年《艾诺迪亚》等游戏就是用java开发的。

    艾诺迪亚

    • Azul VM:与特定硬件平台绑定、软硬件配合的专有虚拟机,人称“高性能Java虚拟机中的战斗机”。
    • Apache Harmony:IBM和Intel联合开发,但是被Sun打压,最后被放弃,但是其Java类库代码被吸纳进了Android SDK,另类的方式存活着。
    • Microsoft JVM:只能在windows下运行,被sun告了,后来gg。
    • Taobao JVM:阿里基于OpenJDK开发了自己的定制版本AlibabaJDK,是整个阿里Java体系的基石,在阿里产品上性能高,严重依赖intel的cpu。

本学习笔记基于宋老师的JVM课程。学习之路道阻且长,共勉。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值