JVM引言

1. JVM

顾名思义,JVM(java virtual machine)是一种java虚拟机器,实现了Java语言的跨平台运行。也就是说,JVM是负责编译、管理、执行Java程序的,那么JVM必然有一套类似操作系统的完整运行机制,包括内存机制、执行机制、管理机制等,下面我们就详细的对这些机制进行学习。

1.1 内存机制

我们知道,程序在计算机内运行必然要分配CPU、内存资源等,由于Java程序是跨平台的(windows和linux都可运行),因此就需要一个中间件来实现,这就是JVM。JVM可以将Java语句编译成适应不同平台的汇编指令并执行,也可以根据程序执行需要申请内存资源,然后JVM根据Java语句执行需要来管理这些内存资源。

根据Java程序的执行需要,JVM将分配的内存大致划分为以下五项:程序计数器、虚拟机栈、本地方法栈、方法区、堆区。

1.2 执行机制

JVM负责Java程序的执行,那么从Java语句到执行程序,之间的过程是怎么发生的呢?

首先,我们提到JVM使Java语言具备跨平台性,其本质实现就是java源程序.class文件编译后生成的.class文件,其是JVM能识别的语言,那么为什么要编译呢?

  • 可执行性:Java语言是高级语言,JVM并不认识这种语言,因此需要转变成JVM能识别的语言
  • 移植性:通过编译成.class文件,能够实现一处编译、处处运行。

之后,就是JVM将能识别的代码通过解释器转换为特定系统的机器执行码。

1.2.1 编译

上面说到,编译就是将java源代码转换成JVM能识别的字节码文件,需要经过词法分析、语法分析、语义分析等多个步骤,对应图示如下:

在这里插入图片描述

1.2.2 类加载

有了.class文件后,JVM就可以运行这些.class文件了,由于.class文件是编译后的静态文件,因此JVM需要将其二进制流加载进虚拟机,加载之后,JVM就可以根据class文件做一些执行前准备了,比如验证class文件是否正确、为类的静态变量分配内存、将class文件中的符号引用转换为直接引用等。

1.2.3 初始化

加载之后,就是类初始化,此过程将代码语句执行提前,包括静态代码块的执行。

1.3 管理机制

在这里,管理机制从广义上来说覆盖了上面的运行机制和内存机制,但丛狭义上也能理解为JVM在程序运行过程中对程序的管理,比如与操作系统的交互(锁升级机制),与内存的交互(垃圾回收)等。

在这里,我们着重要关注的是垃圾回收机制,其将内存释放从用户操作中解放,且实现了优秀的回收效果。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值