有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

JVM(Java虚拟机)是一种抽象机器。

我是java初学者。我只是读了一行“ JVM(Java虚拟机)是一种抽象机器。“有人能帮我理解抽象机器这个词吗?什么是抽象机器


共 (5) 个答案

  1. # 1 楼答案

    这意味着不是真正的机器,但是,它的行为就像一台机器。不是任何机器,而是被称为中央处理器(CPU)的机器

    你可以这样理解,每当你编写java程序时,你是在为一台机器编写指令,但这台机器是抽象的,叫做java虚拟机(JVM)

    对于每个操作系统(OS),都有一个虚拟机,这样您就不必将不同版本的java程序写入不同的OSJDK中的JVM将处理到每个操作系统的转换

    java程序通过这些步骤,以便底层操作系统理解

    .java (Source file) gets compiled by compiler and becomes .class(class file) and this will be passed to JVM to be interpreted to machine language.
    
    Class file is the one that has instructions for JVM
    
  2. # 2 楼答案

    JVM=JAVAVIRTUALMACHINE:虚拟这个词本身表示它在物理上不存在

    此处详述:

    抽象的意思是隐藏的

    1. 当汇编程序在计算机上运行时,它将在系统运行时环境中执行:

      属性

      • 依赖于平台(如果为windows编译,程序将仅在windows中运行,而不是在Linux/UNIX等中运行)
      • 不可携带(同上)
      • 系统运行时(在用户PC中,主要由操作系统控制)
    2. 当Java程序运行到一台计算机上时,它会在另一台虚拟机(JVM)中执行,运行时环境由JRE(Java运行时环境)提供,安装JDK(Java开发工具包)时会自动安装

    如果没有JRE,就不可能运行Java程序(更新:您可以将定制的JRE与代码捆绑在一起,在这种情况下,不需要单独安装JDK或JRE,只需在JDK9及以上版本中安装)

    这个JVM本身在系统运行时运行(在用户的PC/OS中),但是当Java程序运行时,它被加载到这个运行的JVM中

    获得更实用的视觉体验:(仅适用于Windows)

    1. 打开任务管理器
    2. 转到“流程”选项卡
    3. 查找Java(TM)平台SE二进制文件(这是JVM)Java实例

    现在运行一个java程序并编写一些代码来延迟执行,比如带有等待和通知的多线程(你可以在谷歌上找到这样的程序),由于这个正在运行的程序,您的Java实例将显示出较高的内存和磁盘使用率(虽然不高,但略高于JRE/JVM中没有运行程序时的使用率)。您在Task Manager中看到的这些进程是在系统运行时运行的,您的Java程序将不会在其中列出

    相反,它将在已经运行的JRE中运行

    这就是JVM是抽象的原因

    现在,做一个小交叉检查,并证明它

    运行2-3个java程序,或者让它们等待更长时间,或者只编写输入扫描程序,不提供输入,程序将继续在阻塞状态下运行,以便我们以后可以看到它们

    一旦获得,请确认task manager中只运行了一个JVM/Java实例(取决于您安装了多少JRE,有时IDE也可以创建一个实例,所以最好先关闭它以进行清晰观察)

    现在,那些2-3个Java程序在哪里运行??打开VisualVM(它位于java可执行文件所在的同一个包/文件夹下)

    在这个VisualVM中,您可以清楚地看到,列出了所有正在运行的Java程序

    现在,打开并排的窗户。。。任务管理器、VisualVM和一个运行代码的控制台

    核实

    • 在任务管理器中——1个Java二进制实例
    • 在VisualVM中——3个不同的程序实例(如果运行3个java程序集)

    现在,在一段代码中提供输入,这样阻塞状态消失,程序成功终止

    现在核实一下

    • 在任务管理器中——仍然是一个Java二进制实例
    • 在VisualVM-2实例中,因为1个代码终止/完成

    所以,所有Java程序都在虚拟机下运行,虚拟机是隐藏的、物理上不可用的、抽象的

  3. # 3 楼答案

    抽象机器是指所有java应用程序都运行在JVM中,JVM运行在Windows、Linux、Mac等不同平台上

    JVM是java应用程序可以运行所有平台的接口

  4. # 4 楼答案

    这是一个哲学问题。当编译java应用程序时,编译器会生成自己的“汇编”代码,这些代码不能直接在硬件上运行,它需要JVM。因此,JVM为java代码创建了一个类似于机器的环境。换句话说,从java的角度来看,它是一台机器,但实际上是一个位于计算机操作系统之上的程序

  5. # 5 楼答案

    抽象机器是一种没有实体存在的机器

    抽象性

    • 自行车具有物理存在性。我能摸到它。它不是抽象的

    • 计算机芯片具有物理存在性。我能摸到它。它不是抽象的

    • JVM是一个正在执行的程序。。。没有物质存在。我不能碰它。这是抽象的

    机器稳定性:

    • 自行车是运送人的机器

    • 计算机芯片是一种机器,用于执行在芯片指令集中编码的程序;e、 g.英特尔x86机器代码

    • JVM也是执行所有JVM指令集中编码的程序的机器;i、 e.Java字节码