当前位置:网站首页>1. JVM入门介绍
1. JVM入门介绍
2022-07-06 09:30:00 【机智的爆爆哥】
1. 学JVM的目的是什么?
大家学要带着目的去学 而不是说 他让我学我就学
那么 他为什么让你去学呢?
好了不卖关子了
学习JVM 可以让我们清晰在Java的程序执行流程 对方法 属性 类有着更清晰的理解 并且对学习并发也很有好处 如果说实战的话 那肯定就是JVM参数调优了
这时候 你将不会在是初学者 渐渐向着大佬迈进
当你老了,回顾一生,就会发觉:什么时候出国读书、什么时候决定做第一份职业、何时选定了对象而恋爱、什么时候结婚,其实都是命运的巨变。只是当时站在三岔路口,眼见风云千樯,你作出抉择的那一日,在日记上,相当的沉闷和平凡,当时还以为是生命中普通的一天。
对于我们来说 学JVM只是平凡的一天天 但是将会给未来的我们打下基石
2. 简单介绍JVM
跨平台与跨语言
jvm是一个跨语言的平台 现在已支持多种语言在jvm上运行
换句话说 java平台的语言 而jvm是跨语言的平台
简单来讲 我们的java源文件 经过javac命令 编译成.class文件 并不是立刻去执行的 而是要通过jvm将其翻译成机器语言 最终得以执行 只是这一切我们无法感知罢了
虚拟机
虚拟机简单分为两种 系统虚拟机而程序虚拟机
前者可以装整一个操作系统 如windows和linux 后者则是为单个程序而设计的 典型代表就是jvm
这里有必要上一张图来让大家理解下jvm所在的位置
注意 jvm并不是直接与硬件进行交互的 它的运行在操作系统上的
3. JVM架构
整体架构
整体架构如下所示 还是先建立个印象 后面需要会画
架构模型
Java编译器指令流主要分为两种 一种是基于栈的 一种是基于寄存器的
两者有什么区别呢?
基于栈架构 实现起来相对简单 且不需要依赖硬件 也就是说可以跨平台使用
而基于寄存器架构 依赖于硬件 移植性差
而为了不受硬件的限制,为了更大的跨平台性,所以java编译器实现采用的是栈式架构。
4. JVM生命周期
JVM的启动是由引导类加载器创建一个初始类来完成的,根据JVM的不同实现,该类的定义个不同。
当运行一个java程序的时候,一个JVM进程才被真正启动,程序结束,JVM也随之退出了。
共有五种情况会造成JVM退出,如果问到了,简单答个两三种就可以了,全答出来,就有些卷了,面试官可能都没那么清楚。
- 程序正常结束,JVM退出
- 出现异常导致程序退出,JVM随之退出
- 操作系统的错误导致JVM退出
- 调用Runtime.hale()或System.exit()导致JVM退出
- 用JNI Invocation API卸载JVM(C语言调用)
5. JVM的历史发展
1.最初的虚拟机sun classic
这是最古老的虚拟机,1996年Sun公司开发的第一款商用Java虚拟机,实现了解释器与编译器结合运行,解释运行速度快,编译运行效率高,结合起来使用更佳。
2.绝对霸主 HotSpot
占有绝对的市场地位,jdk1.3以后,成为openJdk和OracleJdk都默认的JVM,值得一提的是他的热点代码检测技术,通过计数器找到最具价值的代码缓存起来,提高效率。
3.第二霸主 JRocket
BEA公司研发的号称最快的JVM,这可能是在他们自家产品上实现的,专注于服务端,全部代码全部靠编译器编译执行,了解即可。
ps:该公司后期被Oracle收购,在HotSpot上移植JRocket的优秀特性。
4.第三霸主 J9
IBM公司研发的,市场地位与HotSpot接近。
5.未来霸主 Grral VM
真正跨语言的全栈JVM,可在任何平台上使用,未来可期,如果有天要替换HotSpot,那么下一个接班人必定是它了。
边栏推荐
- 逻辑运算指令
- Monomer application concept
- ~69 other ways to use icon fonts
- 字节跳动技术面试官现身说法:我最想pick什么样的候选人
- string. How to choose h and string and CString
- [graduation project] QT from introduction to practice: realize imitation of QQ communication, which is also the last blog post in school.
- The most lost road I have ever walked through is the brain circuit of ByteDance programmers
- Eureka high availability
- TCP的三次握手和四次挥手
- Mongodb learning notes
猜你喜欢
Fdog series (I): think about it. It's better to write a chat software. Then start with the imitation QQ registration page.
arithmetic operation
Shell_ 01_ data processing
Activiti目录(五)驳回、重新发起、取消流程
Activiti目录(四)查询代办/已办、审核
服务器端渲染(SSR)和客户端渲染(CSR)的区别
字节跳动开源GAN模型压缩框架,算力最高节省97.8%丨ICCV 2021
Notes on how the network is connected
Error occurred during initialization of VM Could not reserve enough space for object heap
Alibaba cloud server builds SVN version Library
随机推荐
Introduction to microservices
唯有學C不負眾望 TOP5 S1E8|S1E9:字符和字符串&&算術運算符
How to configure hosts when setting up Eureka
Shell_ 06_ Judgment and circulation
Activiti directory (I) highlights
Which is more important for programming, practice or theory [there are some things recently, I don't have time to write an article, so I'll post an article on hydrology, and I'll fill in later]
7-12 inventory code base
数据传送指令
控制转移指令
Monomer application concept
字节跳动技术面试官现身说法:我最想pick什么样的候选人
ByteDance technical Interviewer: what kind of candidate do I want to pick most
原型链继承
@RestController、@Controller
@RequestMapping、@GetMapping
算数运算指令
字节跳动2022校招研发提前批宣讲会,同学们最关心的10个问题
这116名学生,用3天时间复刻了字节跳动内部真实技术项目
冯诺依曼体系结构
汇编语言段定义