小白学习JVM--概述和模型
Posted 肖帆咪
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了小白学习JVM--概述和模型相关的知识,希望对你有一定的参考价值。
文章目录
为什么学习JVM
作用一:面试需要
不懂JVM可以写出优质的代码,也可以做出优秀的项目,那么为什么要学习JVM?因为面试官最喜欢问的就是关于JVM的东西
作用二:中高等程序员的必备技能
可以项目管理,以及性能优化
VM是什么
VM就是Virtual Machine,虚拟机,他是一款软件,用来执行一系列虚拟计算机指令.可以将虚拟机分为系统虚拟机和程序虚拟机.
我们耳熟能详的VMware就是系统虚拟机,提供可运行完整操作系统的软件平台.
程序虚拟机典型的代表就是java虚拟机,在java虚拟机中执行的指令我们成为java字节码指令.
java技术的核心就是java虚拟机,因为所有的java程序都运行在java虚拟机内部.
JVM的作用
java虚拟就是二进制字节码的运行环境,负责装在字节码到其内部,解释/编译为对应平台的机器码指令执行,每一条java指令,java虚拟机都有详细定义.怎么处理,结果放哪都有定义
特点:
- 一次编译到处运行
- 自动内存管理
- 自动垃圾回收功能
如今的JVM不仅可执行java字节码文件.其他的语言编译的字节码文件也可以在jvm上运行,是一个跨平台语言
JVM的位置
JVM是运行在操作系统之上的,与硬件没有直接的交互.
JVM的整体组成
- 类加载器ClassLoader
- 运行时数据区(Runtime Data Area)
- 执行引擎(Execution Engine)
- 本地库接口(Native Interface)
简单示意图:
详细示意图
各个组成的用途
先将.java文件转换为.class文件,jvm将字节码文件---------类加载器-------->内存的运行时数据区(由于字节码不能直接交给操作系统执行)----------执行引擎---------->字节码转为底层系统指令----------->CPU(这个过程需要调用本地库接口)
运行时数据区中的是Heap模块
java的执行流程
JVM架构模型
java编译器输入的指令流给予一种给予栈的指令集架构,另一种是基于寄存器的指令集架构
基于栈式架构的特点
- 设计实现简单,适用于资源受限的系统
- 使用领地址指令方式分配,执行过程依赖于操作栈,指令集更小,编译器容易实现
- 不需要硬件支持,可移植性好,更好实现跨平台
基于寄存器式架构特点
- 指令完全依赖于硬件,可移植性差
- 性能好,效率高
- 使用的指令更少
例如:
javap -v class//将.class文件反编译为指令集
由于跨平台设计,java指令集都是根据栈设计,不同cpu架构不同,所以不能设计为基于寄存器的
优点:跨平台,指令集小,编译器容易实现
缺点:性能低,同样的操作需要更多的指令
以上是关于小白学习JVM--概述和模型的主要内容,如果未能解决你的问题,请参考以下文章