当前位置:首页 > 科技  > 软件

这是一篇给Java初学者看的JVM文章

来源: 责编: 时间:2024-05-11 09:17:10 276观看
导读前言很多Java开发人员,还不清楚JVM是什么,就直接涉足JVM调优。很多Java开发人员,说起JVM,只知道运行时数据区域(或称之为JVM内存布局或JVM内存结构)。还有很多Java开发人员,在被问起:“你知道Java内存模型吗?”,答:“知道,Java内

前言

很多Java开发人员,还不清楚JVM是什么,就直接涉足JVM调优。5Fj28资讯网——每日最新资讯28at.com

很多Java开发人员,说起JVM,只知道运行时数据区域(或称之为JVM内存布局或JVM内存结构)。5Fj28资讯网——每日最新资讯28at.com

还有很多Java开发人员,在被问起:“你知道Java内存模型吗?”,答:“知道,Java内存模型分为方法区、堆、...”。5Fj28资讯网——每日最新资讯28at.com

......5Fj28资讯网——每日最新资讯28at.com

虽说“概念”这个词发明出来是为了方便交流和说明问题的,不用太过于较真。但是,答非所问就是你的不对了。5Fj28资讯网——每日最新资讯28at.com

如果你属于其中一者,我劝你看完这篇文章。5Fj28资讯网——每日最新资讯28at.com

本文就一个目的:认识JVM。5Fj28资讯网——每日最新资讯28at.com

从 Java 的跨平台特性说起

认识JVM应该从哪里入手?5Fj28资讯网——每日最新资讯28at.com

可以问自己几个问题,为什么有JVM?没有JVM会怎样?5Fj28资讯网——每日最新资讯28at.com

Java编程语言设计的初衷就是要解决一个问题:程序员编写一次程序,可以在任何提供Java运行时环境的机器上运行。5Fj28资讯网——每日最新资讯28at.com

也就是Java语言的跨平台特性“一次编写,到处运行”。5Fj28资讯网——每日最新资讯28at.com

这一点可以在官方提供的文档里证实:5Fj28资讯网——每日最新资讯28at.com

https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-1.html5Fj28资讯网——每日最新资讯28at.com

可能有些Java开发人员对跨平台特性不是很理解:“不应该就是编写一次到处运行吗?”。5Fj28资讯网——每日最新资讯28at.com

当然不是,如果了解C、C++语言的,就知道,想要在不同平台上运行,需要分别编译,甚至重新编写。5Fj28资讯网——每日最新资讯28at.com

当然,这是所有编程语言都存在的问题。原因下面有说明。5Fj28资讯网——每日最新资讯28at.com

那么,Java是如何解决的?5Fj28资讯网——每日最新资讯28at.com

Java 跨平台的实现:JVM

Java之所以能实现跨平台,离不开JVM的支持。5Fj28资讯网——每日最新资讯28at.com

下面对此展开说明。5Fj28资讯网——每日最新资讯28at.com

JVM 的定义

JVM,全称:Java Virtual Machine (Java 虚拟机)。5Fj28资讯网——每日最新资讯28at.com

下面是官方对JVM的定义:5Fj28资讯网——每日最新资讯28at.com

Java虚拟机是一种抽象的计算机。就像真正的计算机一样,它有一个指令集,并在运行时处理各种内存区域。5Fj28资讯网——每日最新资讯28at.com

这个说明已经非常简单明了了。如果不理解的继续看下文。5Fj28资讯网——每日最新资讯28at.com

跨平台问题说明

任何一个高级编程语言编写的程序,在最终执行前,都会被翻译成计算机可以理解的语言:机器码,也就是诸如0101的二进制数。5Fj28资讯网——每日最新资讯28at.com

图片图片5Fj28资讯网——每日最新资讯28at.com

这些机器码就是指令的实际表示,计算机的工作原理就是通过执行这些指令来完成具体的任务。5Fj28资讯网——每日最新资讯28at.com

(每一条指令中明确规定了计算机从哪个地址取数,进行什么操作,然后送到什么地址去等步骤)5Fj28资讯网——每日最新资讯28at.com

而同一个操作,在不同的平台,指令可能会有所不同。5Fj28资讯网——每日最新资讯28at.com

例如,“将数据从内存加载到寄存器”的操作,在x86架构和ARM架构中,指令就不一样:5Fj28资讯网——每日最新资讯28at.com

  • 在x86架构中,可能会使用MOV指令将数据加载到寄存器EAX中:
MOV EAX, [0x12345678]
  • 在ARM架构中,可能会使用LDR指令将数据加载到寄存器R0中:
LDR R0, [0x12345678]

所以,在一个平台上编写的程序要在其他平台上运行,就需要重新编译,甚至重写。否则就会出现下图现象。5Fj28资讯网——每日最新资讯28at.com

图片图片5Fj28资讯网——每日最新资讯28at.com

这也正是跨平台问题存在的根本原因。5Fj28资讯网——每日最新资讯28at.com

从编码到运行

而JVM作为一个抽象的计算机,对外提供了一套自己的指令集,作用何在?5Fj28资讯网——每日最新资讯28at.com

JVM指令集作用是:在不同平台运行符合自己指令的程序时,会将该指令转换成当前机器的本地指令。5Fj28资讯网——每日最新资讯28at.com

这样就避免了多次编译的操作,从而实现“一次编写,到处运行”。5Fj28资讯网——每日最新资讯28at.com

或者这样理解:JVM替代了多次编译的工作。5Fj28资讯网——每日最新资讯28at.com

那么,“符合自己指令的程序”是什么呢?5Fj28资讯网——每日最新资讯28at.com

没错,就是Java字节码(class文件)。5Fj28资讯网——每日最新资讯28at.com

我们平时在编写完.java源码后,会经过JDK提供的编译工具(javac)编译为.class,而.class文件里面的内容就是JVM指令。5Fj28资讯网——每日最新资讯28at.com

图片图片5Fj28资讯网——每日最新资讯28at.com

JVM 已成为规范

可能会有人有疑问,“为什么javac不直接编译成机器码?”5Fj28资讯网——每日最新资讯28at.com

三个方面回答这个问题:5Fj28资讯网——每日最新资讯28at.com

  1. 如果javac直接编译成机器码,就又回到跨平台的问题了。
  2. JVM除了解决跨平台问题外,还负责了内存管理和安全性的问题。
  3. 发展至今,JVM已经成为了一种规范,只要符合JVM规范,支持任何语言运行在JVM上。

图片图片5Fj28资讯网——每日最新资讯28at.com

JVM 的后续了解

通过上面的描述,如果理解了JVM是什么、JVM的作用或者JVM存在的意义,那就算是入门了。5Fj28资讯网——每日最新资讯28at.com

如果激发了你对“JVM指令是什么”以及“它们如何被转换成机器指令”的好奇心,或者产生“类加载和JVM的关系”、“垃圾回收器和JVM的关系”等疑问。5Fj28资讯网——每日最新资讯28at.com

那么,请关注我,后面的文章会带你一起了解。或者,自己可以去官方进行了解,官方文档链接给你放在这。5Fj28资讯网——每日最新资讯28at.com

Java 各版本文档:5Fj28资讯网——每日最新资讯28at.com

https://docs.oracle.com/en/java/javase/5Fj28资讯网——每日最新资讯28at.com

Java语言&JVM规范文档:5Fj28资讯网——每日最新资讯28at.com

https://docs.oracle.com/javase/specs/index.html5Fj28资讯网——每日最新资讯28at.com

总结

最后总结一下本文内容:5Fj28资讯网——每日最新资讯28at.com

  1. 所有高级编程语言编写的程序最终要翻译为机器码(指令的实际表示)才能被计算机理解。
  2. 由于计算机的硬件架构、操作系统不同,同一个操作指令可能也会不同。所以,程序要想在不同平台上运行,需要重新翻译或编写。
  3. Java最初是为了解决程序跨平台运行的问题,JVM正是实现跨平台特性的关键所在。
  4. Java语言编写的程序会被编译为Java字节码,也就是JVM自身的指令。运行时,JVM会将指令转换成本地机器指令,从而实现跨平台。
  5. JVM发展至今,已然是一个规范,已支持上百种编程语言。

当了解了JVM的作用、存在的意义,再去了解JVM的工作原理就不会那么困惑了。5Fj28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-87960-0.html这是一篇给Java初学者看的JVM文章

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 总结CSS中各个属性使用百分比(%)基准值

下一篇: 腾讯互娱面经详解

标签:
  • 热门焦点
  • Mate60手机壳曝光 致敬自己的经典设计

    8月3日消息,今天下午博主数码闲聊站带来了华为Mate60的第三方手机壳图,可以让我们在真机发布之前看看这款华为全新旗舰的大致轮廓。从曝光的图片看,Mate 60背后摄像头面积依然
  • 俄罗斯:将审查iPhone等外国公司设备 保数据安全

    iPhone和特斯拉都属于在各自领域领头羊的品牌,推出的产品也也都是数一数二的,但对于一些国家而言,它们的产品可靠性和安全性还是在限制范围内。近日,俄罗斯联邦通信、信息技术
  • 如何正确使用:Has和:Nth-Last-Child

    我们可以用CSS检查,以了解一组元素的数量是否小于或等于一个数字。例如,一个拥有三个或更多子项的grid。你可能会想,为什么需要这样做呢?在某些情况下,一个组件或一个布局可能会
  • 让我们一起聊聊文件的操作

    文件【1】文件是什么?文件是保存数据的地方,是数据源的一种,比如大家经常使用的word文档、txt文件、excel文件、jpg文件...都是文件。文件最主要的作用就是保存数据,它既可以保
  • 三分钟白话RocketMQ系列—— 如何发送消息

    我们知道RocketMQ主要分为消息 生产、存储(消息堆积)、消费 三大块领域。那接下来,我们白话一下,RocketMQ是如何发送消息的,揭秘消息生产全过程。注意,如果白话中不小心提到相关代
  • 每天一道面试题-CPU伪共享

    前言:了不起:又到了每天一到面试题的时候了!学弟,最近学习的怎么样啊 了不起学弟:最近学习的还不错,每天都在学习,每天都在进步! 了不起:那你最近学习的什么呢? 了不起学弟:最近在学习C
  • 本地生活这块肥肉,拼多多也想吃一口

    出品/壹览商业 作者/李彦编辑/木鱼拼多多也看上本地生活这块蛋糕了。近期,拼多多在App首页“充值中心”入口上线了本机生活界面。壹览商业发现,该界面目前主要
  • 中国家电海外掘金正当时|出海专题

    作者|吴南南编辑|胡展嘉运营|陈佳慧出品|零态LT(ID:LingTai_LT)2023年,出海市场战况空前,中国创业者在海外纷纷摩拳擦掌,以期能够把中国的商业模式、创业理念、战略打法输出海外,他们依
  • 新电商三兄弟,“抖快红”成团!

    来源:价值研究所作 者:Hernanderz 随着内容电商的概念兴起,抖音、快手、小红书组成的“新电商三兄弟”成为业内一股不可忽视的势力,给阿里、京东、拼多多带去了巨大压
Top