当前位置:首页 > 虚拟机 > 正文

java虚拟机中运行文件的类型(可以在java虚拟机运行的文件类型)

java中vm技术是什么

VM是Java虚拟机。Java并不运行在作上,而是运行在虚拟机上。这就是Java可以跨平台的原因。Java编译器将Java源程序编译成字节码。字节码这是一个中间选项,只有Java虚拟机可以解释字节码,因此Java类文件在虚拟机中运行。

java虚拟机采用什么软件体系结构

JA虚拟机的生命周期。它是运行作业的Java机器的虚拟实例:它负责运行Java程序。当Java编程开始时,虚拟机实例就诞生了。当程序关闭退出时,虚拟机实例也会消亡。如果在同一台计算机上同时运行三个Java程序,就会获得三个Java虚拟机实例。每个Java程序都在其自己的Java虚拟机实例中运行。Java机器的虚拟实例通过调用主类的initialize来运行Java程序。main()必须是公共的、静态的、返回void并接受字符串数组。任何具有此类main的类都可以用作运行Java程序的起点。在上面的例子中,Java程序的initial类中的main将用于启动程序的初始线程,任何其他线程都将从该初始线程开始。Java虚拟机中有两种类型的线程:守护线程和非守护线程。守护线程一般由虚拟机本身使用,例如执行垃圾收集工作的线程。然而,Java程序也可以将守护程序创建的任何线程标记为线程。Java程序中的初始线程(在main()中启动的线程)不是守护线程。只要还有一些非守护线程,Java程序就会继续运行。当程序中所有非守护线程都终止时,虚拟机实例立即退出。如果安全管理器允许,程序本身也可以通过调用Runtime类或System类的退出。JA虚拟机的架构下图是JA虚拟机的结构图,每个Java虚拟机都有一个类型加载子,根据给定的完全限定名加载类(类或接口)。此外,每个Java虚拟机都有一个执行引擎,负责执行加载的类中包含的指令。当虚拟机运行JA程序时,需要内存来存储很多东西,例如:字节码、加载的类文件中的其他数据、程序创建的对象、的参数、返回值、局部变量等。Java虚拟机将它们组织在几个“运行时识别的位置”以便于管理。一些运行时数据区域由程序中的所有线程共享,而另一些则仅由一个线程拥有。Java虚拟机的每个实例都有一个模式区域和一个由该虚拟机实例中的所有线程共享的堆栈。当虚拟机加载类文件时,它会从类文件中包含的二进制数据中提取类型信息。接下来,将此类信息放入区域模式中。当程序运行时,虚拟机将程序运行时创建的对象放置在堆栈上。创建每个新线程时,它将拥有自己的PC相关寄存器(程序与程序)和Java堆栈。如果线程执行Java(非本机),则PC文件的值始终指示在要执行的指令旁边,并且Java库始终按此顺序存储Java的状态-包括局部变量、调用时传递的参数、返回值、中间作事件等本地中的本地调用的状态存储在取决于具体实现的中的堆栈上,或者可以在寄存器或与具体实现相关的其他一些存储器中完成。Java库由许多堆栈表组成,每个堆栈包含Java调用的状态。当线程调用Java时,虚拟机将新的堆栈压入Java线程堆栈中。当返回时,堆栈体从Java堆栈中弹出并丢弃。Java虚拟机没有寄存器,Java库中使用它的指令来存储中间数据。制定此策略的原因是使Java虚拟机的安装尽可能紧凑,并在很少有通用注释的平台上实现Java虚拟机。此外,Java虚拟机基于堆栈的架构还支持某些虚拟机在运行时执行的动态编译代码和定时编译器的优化。下图描绘了Java机器为每个线程创建的虚拟内存区域,这些内存区域是私有的,任何线程都不能访问另一个Java线程的PC文件或堆。上图显示了一个以三个线程运行的虚拟机实例。线程1和2都执行Java,而线程3执行本机。Java堆栈向下增长,顶部堆栈如下。当前执行的栈表以浅色显示,对于运行Java的线程来说,PC命令总是显示执行下一个命令的命令。例如,线程1和线程2都用浅色显示,而线程3是执行本地的主,PC寄存器的值,另一个用深色显示,不确定。数据类型在Java中,虚拟机对特定数据类型执行计算。数据类型可以分为

java源文件是通过java虚拟机JVM(javac命令)编译成类文件,那类文件又是通过什么工具(java命令)执行呢?
字节码---->本地机器码。这就是Java比C慢的原因,因为它在字节码转换过程中需要额外的步骤。