【JVM】JVM基础知识

Java的跨平台性

Java的跨平台性,能够实现跨平台的是Java程序,而不是JVM,JVM是用C/C++开发,是编译之后的机器码,无法实现跨平台,不同的平台下需要安装不同的JVM
在这里插入图片描述
Java程序编译之后会生成字节码文件,即.class文件,JVM就是负责将字节码文件翻译成特定平台下的机器码然后运行,在不同的平台上安装对应的JVM,就可以来运行字节码文件,通过这一“中间层”,在不同平台上运行Java程序,实现“一次编译,到处运行”的目的。

JVM概念

JVM即Java Virtual Machine,Java虚拟机
JVM是Java的核心和基础,在Java编译器和OS平台之间的虚拟的处理器,是一种利用软件方法来实现的抽象的计算机的下层的操作系统和硬件平台,在其上面执行java的字节码程序
JVM有之间的完善的硬件架构,如处理器,堆栈,寄存器,还有相应的指定系统,使用JVM可以实现开发和操作系统的无关,实现跨平台性。

JDK/JVM/JRE是什么关系

JRE(Java Runtime Environment ,Java的运行环境),也就是Java平台,所有的Java程序都是要在JRE 下才能运行,
JDK(Java Development Kit,Java开发工具包),程序开发过程中用来编译、调试Java程序用的Java开发工具包,JDK的工具包也是Java程序,也是需要在JRE上运行,为了保证JDK的独立性和完整性,在JDK安装过程中,JRE也是安装的一部分,所以在JDK安装的过程中有一个jre的目录,主要存放的是JRE的文件
JVM(Java Virtual Machine,Java虚拟机)是JRE的一部分,是英国虚拟出来的计算机,通过实际的计算机来仿真模拟各种计算机的功能
在这里插入图片描述
在这里插入图片描述

JVM生命周期

启动和消亡

JVM负责运行Java程序,启动一个Java程序时,一个虚拟机也就诞生了,当程序关闭时,JVM实例也就随之消亡

JVM运行的起点:

JVM实际是通过调用某个初始类的main()方法来运行一个java程序,而这个main()方法必须是共有的(public)、静态的(static)、返回值为void,并且能够接受一个字符串数组作为参数,任何拥有这样main方法作为java程序运行的起点

JVM两种线程:

守护线程和非守护线程
只要有Java程序在继续运行,即非守护线程在运行,守护线程依赖于非守护线程,当程序运行结束退出之后,守护线程也会退出,继而JVM虚拟机实例也会自动退出

JVM工作过程

在这里插入图片描述
JVM的运行过程涉及到三个子系统:
类装载子系统(Class Loader SubSystem)
运行时数据区(Runtime Data Areas)
执行引擎(Execution Engine)

类加载子系统

作用是将字节码文件加载到JVM中,在类第一次被使用时,是需要初始化类文件
装载:功能就是来加载类,使用到了三个类加载器,分别是Bootstrap ClassLoader、Extension ClassLoader、Application ClassLoader
链接:
验证:字节码验证器将验证生成字节码是否正确,如果验证失败,将得到验证错误
准备:对于所有的静态变量,进行分配内存并给定默认值,tmp分配内存,

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值