【JVM篇】什么是jvm

文章目录

🍔什么是Java虚拟机

JVM指的是Java虚拟机,本质上是一个运行在计算机上的程序,可以运行 Java字节码文件,可以运行Java,kotlin,Scala,groovy等语言

任务管理器启动的Java进程,其实是一个虚拟机进程,它会执行我们编写好的代码

比如我们编写并运行一个Java程序,在进程中就能够看到

java 复制代码
import java.io.IOException;

public class demo1 {
    public static void main(String[] args) throws IOException {
        System.in.read();
    }
}

运行后发现,程序发送了阻塞

并且我们可以发现,这里编译器是使用了java.exe来启动了这个程序

并且在当前的进程列表会显示这个进程

发现这里有3个Java进程,但是到底哪一个才是我们的Java进程呢
我们可以使用jps命令进行查看

发现id为1976的进程名是demo1,和我们的类名一样,所以这个就是我们正在启动的Java进程

并且Java虚拟机不仅仅可以运行Java程序,还可以运行其他语言的程序,比如kotlin

🛸Java虚拟机有什么用

为了支持Java中,编写一次,到处运行的跨平台的特性

🌹Java虚拟机的功能

下面来讲解一下什么是jvm的即时编译

我们来看下面这段代码

java 复制代码
public class demo2 {
    public static void main(String[] args) {
        long start=System.currentTimeMillis();

        demo2 test=new demo2();
        test.jitTest();

        long end=System.currentTimeMillis();
        System.out.println("耗时:"+(end-start)+"ms");
    }

    public int add(int x, int y){
        return x+y;
    }

    public int jitTest(){
        int sum=0;
        for(int i=0;i<100000000;i++){
            sum+=add(i, i);
        }
        return sum;
    }
}

默认情况是打开即时编译的


下面我们加上-Xint这个参数,关闭即时编译功能,看看耗时多少

执行后发现,耗时比之前多了

🎈Java虚拟机的组成

jvm组成分为类加载子系统,运行时数据区,执行引擎,本地接口这四部分


在技术的道路上,我们不断探索、不断前行,不断面对挑战、不断突破自我。科技的发展改变着世界,而我们作为技术人员,也在这个过程中书写着自己的篇章。让我们携手并进,共同努力,开创美好的未来!愿我们在科技的征途上不断奋进,创造出更加美好、更加智能的明天!

相关推荐
笨笨饿2 分钟前
26_为什么工程上必须使用拉普拉斯变换
c语言·开发语言·人工智能·嵌入式硬件·机器学习·编辑器·概率论
酉鬼女又兒11 分钟前
零基础快速入门前端ES6 核心特性详解:Set 数据结构与对象增强写法(可用于备赛蓝桥杯Web应用开发)
开发语言·前端·javascript·职场和发展·蓝桥杯·es6
人大博士的交易之路27 分钟前
数据结构算法——python数据结构
开发语言·数据结构·python
Han_han91931 分钟前
面向对象高级 继承(extends):
开发语言·python
前端老石人37 分钟前
邂逅前端开发:从基础到实践的全景指南
开发语言·前端·html
白毛大侠1 小时前
Go Goroutine 与用户态是进程级
开发语言·后端·golang
ForteScarlet1 小时前
从 Kotlin 编译器 API 的变化开始: 2.3.20
android·开发语言·后端·ios·开源·kotlin
elseif1231 小时前
浅谈 C++ 学习
开发语言·c++·学习
SuperEugene1 小时前
Vue3 性能优化规范:日常必做优化(不玄学、可落地)|可维护性与兜底规范篇
开发语言·前端·javascript·vue.js·性能优化·前端框架