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

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

3天内不再提示

JVM入门之认识程序运行本质

jf_78858299 来源:北洋洋洋 作者:北洋 2023-02-10 11:48 次阅读

JVM是什么

刚入门的时候老师教我们写代码是这样的:

JAVA文件然后用javac命令编译成class文件运行即可。

随着学习的不断拓展和工作中业务代码的积累,对于“为什么会这样”的困惑越来越多,于是写了这篇博客~。

计算机能看懂的是二进制,也就是0和1。那么我们的JAVA程序和计算机又有什么关联呢?他们是怎么联系到一起的?

汇编语言

计算机只能识别0和1,人们发现利用0和1可以做很多事情:

比如可以做加法,由此减乘法除法(利用的也是加法)也可以做到;与,或,异或等这些构成了与门,非门等这些逻辑门;......在这上面进行扩展又可以做很多事情。

但是编写0和1太过于麻烦,这个时候出现了助记符也就是用一个英文代表一串01的数字,也就是汇编语言。

高级语言

对于开发者来说,用汇编写代码不太现实,一个简单的操作要用很多行汇编代码才能实现,所以再它之上做了处理,比如java,c,等等高级语言。那么计算机怎么识别高级语言的呢?

虚拟机是什么

答案是虚拟机,虚拟机可以理解为虚拟计算机,虚拟计算机通过解释器将其认识的指令解释为计算机认识的指令。JVM中只通过解释器来解释运行效率太慢,所以对于热点代码即反复执行的代码通过JIT即时编译器将其编译为本地代码。这个编译器叫做后端编译器。

JVM流行的一点原因是其跨平台性:一次编译,多端运行

怎么实现的大家也大概猜到了,JVM虚拟机识别操作系统将class字节码转换为不同操作系统可以识别的指令。

java代码如何转换成机器识别的代码

我们写代码的时候通过编写JAVA文件,通过javac命令编译成class文件,用java命令运行class文件。

拆分:一,也就是javac命令将java代码编译成为java字节码也就是class文件,这个编译器叫做前端编译器。编译后的class文件由0和1构成,这其实是java字节码的结构。

二,通过类加载器ClassLoader的加载,链接,初始化后将其转换为JVM内存中的数据。我们要想看到class字节码结构是什么样的,可以通过反编译class文件,讲解JAVA字节码文件将在后面博客中详细介绍。

三,执行引擎将高级语言翻译为机器语言即计算机能够识别的语言。

总结:前端编译器将Java文件转换为字节码class文件,通过类加载器ClassLoader的加载,链接,初始化这三步加载到内存中,JVM识别字节码文件将数据放到对应的内存结构中,但是机器不认识这些字节码文件,所以执行引擎又进行了编译转化为计算机能够识别的指令【后端编译器】,其充当了转换字节码的任务(通过解释器解释运行,但是由于效率低,所以对于热点代码通过JIT即时编译器编译成本地代码)

最后来张图:图中运行时数据区为JVM内存结构中的,下一篇博客进行讲解~。

在这里插入图片描述

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

    关注

    2

    文章

    793

    浏览量

    41597
  • JAVA
    +关注

    关注

    19

    文章

    2957

    浏览量

    104544
  • Class
    +关注

    关注

    0

    文章

    53

    浏览量

    19712
  • JVM
    JVM
    +关注

    关注

    0

    文章

    157

    浏览量

    12206
收藏 人收藏

    评论

    相关推荐

    Jvm的整体结构和特点

    JVM特点    首先一次编译处处运行是学习Java语言都知道的事情,其实并不是Java语言跨平台,是JVM跨平台,Jvm运行时并不是执行
    发表于 01-05 17:23

    电机的本质运行原理是什么

    本文章持续更新模型的搭建和文章关注我的博客吧下面是我以视频的形式做的讲解,有兴趣的同学的可以去看看1.电机的本质运行原理是什么?这个视频可以在你入门是给你一个新的视角来看待电机
    发表于 09-06 06:55

    数字电池EDA入门VHDL程序实现集

    数字电池EDA入门VHDL程序实现集
    发表于 12-07 14:14 0次下载

    Jvm工作原理学习笔记

    JVM实例对应了一个独立运行的java程序它是进程级别 a) 启动。启动一个Java程序时,一个JVM实例就产生了,任何一个拥有public
    发表于 04-03 11:03 5次下载

    用JMX连接本地JVM运行的Java程序

    如果有人问你,如何用JMX连接本地JVM运行的Java程序,你会怎么回答? 其实,他只是想开发一个JMX的客户端来配置一个本地Java程序。这个时候,千万不要推荐JConsole,因
    发表于 04-03 15:11 4次下载

    Java程序是如何运行

    的,什么是JVM;要理解我们编写的Java程序运行起来以后到底是什么样子,本质上就是弄清楚JVM是什么样子。 Java
    的头像 发表于 12-27 09:31 1803次阅读

    Java:JVM虚拟机的入门知识

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

    JVM运行时数据区堆内存

    说一下 JVM 运行时数据区吧,都有哪些区?分别是干什么的?
    的头像 发表于 08-19 14:35 657次阅读
    <b class='flag-5'>JVM</b><b class='flag-5'>运行</b>时数据区<b class='flag-5'>之</b>堆内存

    jvm内存溢出故障排查

    JVM内存溢出是常见且令人头疼的问题,特别是在运行大型Java应用程序或长时间运行的应用程序时。当JVM
    的头像 发表于 12-05 11:04 778次阅读

    jvm内存模型和内存结构

    JVM(Java虚拟机)是Java程序运行平台,它负责将Java程序转换成机器码并在计算机上执行。在JVM中,内存模型和内存结构是两个重要
    的头像 发表于 12-05 11:08 892次阅读

    jvm调优参数

    JVM(Java虚拟机)是Java程序运行环境,它负责解释Java字节码并执行相应的指令。为了提高应用程序的性能和稳定性,我们可以调优JVM
    的头像 发表于 12-05 11:29 597次阅读

    jvm哪些区域会发生oom

    JVM 是 Java 虚拟机的缩写,是Java程序运行平台。JVM 内存被划分为不同的区域,每个区域负责不同的任务和存储不同类型的数据。其中,一些区域容易发生内存溢出错误(Out
    的头像 发表于 12-05 11:51 1355次阅读

    jvm运行时内存区域划分

    JVM是Java Virtual Machine(Java虚拟机)的缩写,它是Java编程语言的运行环境。JVM的主要功能是将Java源代码转换为机器代码,并且在运行时管理Java
    的头像 发表于 12-05 14:08 503次阅读

    weblogic jvm参数配置

    在WebLogic中,JVM参数配置是非常重要的,它可以对应用程序的性能和稳定性产生直接影响。JVM参数通过调整Java虚拟机的运行时行为,可以优化内存管理、垃圾回收以及线程管理等方面
    的头像 发表于 12-05 14:31 1370次阅读

    weblogic设置jvm内存大小

    如何设置WebLogic服务器的JVM内存大小。 一、了解JVM内存 JVM(Java Virtual Machine)是Java应用程序运行
    的头像 发表于 12-05 14:44 2971次阅读