0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

JVM知识体系剖析

科技绿洲 来源:Java技术指北 作者:Java技术指北 2023-10-10 11:37 次阅读

从源码到运行、类加载,再到内存分配和垃圾回收,以及JVM调优的技巧与实战。
理论-实战-面试三结合,带大家剖析整个JVM知识体系,一站解决JVM问题。

1、OracleJavaSE 8产品组件

图片
通常来说 Java平台标准版(Java SE)包括 Java SE开发工具包(JDK)和Java SE运行时环境(JRE)。

JRE提供了运行以Java编程语言编写的applet和应用程序所必需的库,Java虚拟机和其他组件;JDK包括JRE以及编译器和调试器等命令行开发工具,可以用来开发Java应用程序 。

PS:JDK包含JRE,我们通常安装JDK的同时也会安装JRE。

2、虚拟机

上图的最下一行Java虚拟机是被 JRE 所包含,我们在介绍Java虚拟机时,先了解虚拟机的概念。

所谓虚拟机,其实就是一台虚拟的机器,可以用来执行一系列虚拟的命令。大体上虚拟机可以分为两种:系统虚拟机和程序虚拟机。

①、系统虚拟机:是完全对物理计算机的仿真,可以说和一台真实的PC操作系统没什么区别。比如常用的 Vmare 以及 Visual Box 软件,通过这些软件能够vwin 出具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。

②、程序虚拟机:专门为执行单个计算程序而产生,最典型的就是Java虚拟机,在Java虚拟机中执行字节码文件命令。

3、Java虚拟机

了解了什么是虚拟机,我们再看什么是 Java虚拟机。

Java虚拟机可以看做是一台抽象的计算机,如同真实的计算机那样,它有自己的指令集以及各种运行时内存区域,它与Java语言没有必然的联系,只与特定的二进制文件——class 文件格式关联(字节码文件),可以通过Java语言或者其他语言编写的程序编译成class文件,然后在Java虚拟机上运行。Java虚拟机有以下二个特点:

①、语言无关

Java虚拟机只和class文件关联,所以只要你编写程序的语言能够编译成class文件,那么都能够在Java虚拟机上运行。
图片
②、平台无关

Java从诞生之初就宣传的一个口号:一次编写,到处运行。

也就是说Java是一个跨平台的语言,那么Java是如何实现跨平台的呢?

其实Java之所以跨平台是因为Java虚拟机的适配,不同的系统实现不同的Java虚拟机。Java虚拟机就相当于操作系统和应用程序之间的中介,每种平台安装适应该平台的Java虚拟机,那么我们编写的程序当然能够在任意平台运行。

4、Java虚拟机种类

商用虚拟机:

①、Sun HotSpot

该虚拟机性能优越,是 sun JDK1.3 及以后所有 sun JDK 版本默认的虚拟机,使用最为广泛,本系列博客就是以这个虚拟机为平台进行介绍。
图片

②、BEA JRockit

JRockit 虚拟机是 BEA公司于 2002 年从 Appeal Virtual Machines 收购获得的虚拟机。它是一款面向服务器硬件和服务端使用场景高度优化过的虚拟机,曾经号称是“世界上速度最快的虚拟机”。由于专注于服务端应用,它的内部不包含解析器的实现,全部代码都靠即时编译器编译后执行。

③、IBM J9

J9 虚拟机是 IBM 公司单独开发的高性能虚拟机,它并不独立出售,而是作为 IBM 公司各种产品的执行平台,IBM 把它定义为一个可以适应从嵌入式设备到大型企业级应用的、高可移植性的Java运行平台。

④、Sun Classic

这个虚拟机很原始,是 JDK1.0 时代使用的Java虚拟机,是各种虚拟机的鼻祖,它的内部不存在即时编译器,只能使用纯解释的方式运行。

⑤、Sun Exact

这是 Sun 公司在 HotSpot 之外的另一个虚拟机,在 JDK1.2 时代曾短暂的投入过商用,它和 HotSpot 同时开发,但最终被 HotSpot 取代。

⑥、ApacheHarmony

Harmony 是 Apache 软件基金会主导的、开源的、独立的、实际兼容与 JDK1.5 和 JDK1.6的虚拟机实现,它间接催生了 GoogleAndroid平台的 Dalvik 虚拟机,Android 的影响力现在有多大不用多说,目前已经是最成功的的数码设备通用平台。但是由于它的 TCK 授权问题,直接导致 Apache 与 Oracle 的决裂,从而退出了 JCP 组成,这是近代 Java 阵营遇到的最严重的分裂危机。

嵌入式虚拟机

①、Dalvik

Dalvik 虚拟机是 Google 等厂商合作开发的 Android 移动设备平台的核心组成部分之一,它执行 dex(Dalvik Executable) 文件而不是 class 文件,使用寄存器架构而不是栈架构,但是它的开发体系与Java有着千丝万缕的关系,可以直接使用大部分的 Java API、dex 文件可以直接从class文件转化而来。并且在 Android 2.2 中提供了即时编译器的实现,性能大大的提高。

②、KVM

在 Android、IOS智能手机操作系统出现之前,曾广泛应用于手机平台的一种虚拟机。

③、CDC/CLDC HotSpot

CDC和 CLDC HotSpot 分别是 Sun 针对高端嵌入式设备和中低端嵌入式设备的虚拟机,用来代替 KVM。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表德赢Vwin官网 网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 内存
    +关注

    关注

    8

    文章

    2861

    浏览量

    73394
  • JAVA
    +关注

    关注

    19

    文章

    2934

    浏览量

    103897
  • JVM
    JVM
    +关注

    关注

    0

    文章

    155

    浏览量

    12166
  • 虚拟机
    +关注

    关注

    1

    文章

    881

    浏览量

    27748
  • 工具包
    +关注

    关注

    0

    文章

    45

    浏览量

    9496
收藏 人收藏

    评论

    相关推荐

    嵌入式学习指引--嵌入式系统知识体系,学习误区

    本帖最后由 eehome 于 2013-1-5 09:56 编辑 1 嵌入式系统的 知识体系  嵌入式系统的应用范围可以粗略分为两大类:电子系统的智能化(工业 控制、现代农业、家用电器、汽车电子
    发表于03-11 16:58

    嵌入式系统知识体系、学习误区及建议

    嵌入式系统 知识体系、学习误区及建议
    发表于08-20 15:29

    HIL测试团队建设上篇-知识体系与角色划分

    人们之所以选择与他人合作,要么是将做的事情过于复杂,不可能独自完成;要么就是想要加快速度,提高效率。对汽车ECU进行HIL测试,也是如此。HIL测试团队 知识体系首先,我们来看看HIL测试团队应具备
    发表于02-08 13:50

    嵌入式系统的知识体系和学习误区

    1 嵌入式系统的 知识体系嵌入式系统的应用范围可以粗略分为两大类:(1)电子系统的智能化(工业控制,现代农业、家用电器、汽车电子、测控系统、数据采集等等);(2)计算机应用的延伸(MP3、手机、通信
    发表于07-30 14:32

    Jvm的整体结构和特点

    文件, JVM都可以识别,这也是现在Java 体系下业务编程经常混语言的原因。  注意:现在和后续 Jvm系列文章都是基于HotSpot-VM和JDK1.8+版本的基础之上。  二、虚拟机结构   J
    发表于01-05 17:23

    嵌入式系统的知识体系

    嵌入式系统的 知识体系嵌入式系统的学习误区嵌入式系统基础阶段的学习建议
    发表于02-19 07:06

    JVM知识点汇总,不看肯定后悔

    JVM知识点汇总,不看肯定后悔
    发表于11-30 06:13

    能够快速构建嵌入式学习所需要知识体系的书籍推荐

    经常有网友要我推荐一些关于嵌入式方面的书,尤其是一些转行学嵌入式的朋友,该看那些书能快速构建嵌入式学习所需要的 知识体系呢?嵌入式是一门交叉学科,没有足够的 知识储备,上来就学习的话,往往也就成了走过场
    发表于12-15 08:01

    LCD1602知识体系的结构学习与理解

    LCD1602的学习与理解文章目录LCD1602的学习与理解一、LCD1602 知识体系的结构二、初始化程序# 前言看过很多博主的文章,很多都讲得不是很清楚,很可能的原因就是,这些博主在写文章的时候
    发表于01-27 06:31

    浅析自然语言处理知识体系结构

    自然语言处理 知识太庞大了,网上也都是一些零零散散的 知识,比如单独讲某些模型,也没有来龙去脉,学习起来较为困难,于是总结了一份 知识体系结构。
    的头像 发表于08-18 09:57 4938次阅读

    电子硬件的知识体系是怎样的

    最近有不少软件领域的牛人进军硬件行业,但不知从何处入手。相信每个人面对一个庞大的 知识体系时都一样迷茫。最佳的应对策略就是找一个最贴近自己需求的切入点,然后向四面八方铺开去逐渐认识整个 知识网络。这篇文章就是为了让你在这个 知识网里面
    的头像 发表于10-20 11:36 4255次阅读

    Java:JVM虚拟机的入门知识

    Java开发现在面试越来越难了,进大厂必备的 JVM、多线程高并发这都是最基础的 知识了,今天我们一起来学习Java虚拟机入门。
    的头像 发表于07-01 11:43 2205次阅读
    Java:<b class='flag-5'>JVM</b>虚拟机的入门<b class='flag-5'>知识</b>

    嵌入式系统的知识体系

    嵌入式系统的 知识体系  嵌入式系统的应用范围可以粗略分为两大类:电子系统的智能化(工业 控制、现代农业、家用电器、汽车电子、测控系统、数据采集等),计算机应用的延伸(MP3、手机、通信、网络、计算机
    发表于10-20 12:35 3次下载
    嵌入式系统的<b class='flag-5'>知识体系</b>

    关于JVM的调优知识

    最近很多小伙伴跟我说,自己学了不少 JVM的调优 知识,但是在实际工作中却不知道何时对 JVM进行调优。今天,我就为大家介绍几种 JVM调优的场景。
    的头像 发表于09-14 14:54 703次阅读

    关于Prometheus监控系统相关的知识体系

    今天浩道跟大家分享关于Prometheus监控系统相关的 知识体系,让你通过本文可以大体掌握其相关 知识体系
    的头像 发表于10-20 09:06 1048次阅读