jvm虚拟机详解(一)-----jvm概述

写在前面

  • 本篇文章是再下人生中的第一次发布关于技术相关的文章,非常感谢女友@苏叶 对我的鼓励和支持。从事开发工作这么多年来,也算是对自己过往的工作的一个总结,对人生的一次重装再出发。从jvm谈起,然后是关于mysql、redis、消息中间件、微服务等最后在归纳一些常见的java面试方面的高频问题。这是开始我的一个写博计划,希望感兴趣的朋友加个关注一起探讨,有什么不做的地方也请欢迎指教。
  • 为什么要先说jvm呢?因为jvm是java程序蜕变的一道门槛。如果你工作三年,跳槽面试时候连jvm内存模型这些都不明白,那说明你平时只是做一些curd的功能,虽说搞开发还真大部分就是做这些的。但是主要是说明你对这个行业的态度,平时自己会不会去主动的去学习,面试官主要关注的还是这方面的。所以,对jvm的了解程度很大部分决定了你的薪资水平。-----以上只是个人见解。

java

	java不仅仅是一门结构严谨、面向对象的编程语言,还是一个由一系列计算机软件和规范形成的技术体系,还有许多不可忽视的优点:
  1. 它摆脱了硬件平台的束缚,
  2. 实现了“一次编译,到处运行”的理想;
  3. 它提供了一个相对安全的内存管理和访问机制;
  4. 它实现了热点代码检测和运行时编译及优化;
  5. 它有一套完善的应用接口,还有无数商业机构和开源社区的第三方类库等

jvm概念

  • JVM是JAVA虚拟机(JAVA Virtual Machine)的缩写,是一个虚构出
    来的计算机,是通过在实际的计算机上仿真模拟各种实现的。JAVA虚拟机有自己完善的虚拟硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。

  • JVM屏蔽了与具体操作系统平台相关的信息,使得JAVA程序只需生成在JAVA虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行

运行流程

在这里插入图片描述

生命周期

当启动java程序,jvm实例的创建从java程序启动开始,main方法作为程序的入口,其他任何线程均由该主线程维护,当程序中全部非守护线程都终止时候或者主管调用退出方法,jvm才退出。
在这里插入图片描述

jvm、jdk、jre区别

  • jkd是用于支持java开发的最小环境
  • jre是支持java程序运行的标准环境
  • jvm所有的java程序都要运行在jvm上,jre包含jvm
  • jdk > jre > jvm
    在这里插入图片描述

常见流行的jvm

  1. Sun Classic / Exact VM

    技术很原始,使用纯解释器方式来执行Java代码,早已弃用,但它是:“世界上第一款商用的java虚拟机”。
    jdk1.2之前, Classic VM 是Sun 公司唯一的虚拟机,1.2时候与HotSpot并存并且是默认虚拟机,1.3开始默认HotSpot,1.4彻底退出虚拟机舞台

  2. Sun HotSpot VM

    HotSpot是目前使用范围最广的虚拟机,它使用准确式内存管理,热点代码探测等
    技术,移植了JRockit的优秀特性,譬如使用JRockit的垃圾回收器与MissionControl服务,使用HotSpot的JIT编译器与混合的运行时系统等

  3. BEA JRockit / IBM J9 VM

    JRockit VM曾经号称:”世界上速度最快的java虚拟机”,是一款专为服务器硬件和服务器端应用场景高度优化的虚拟机。
    J9 VM 是IBM目前主力发展的虚拟机,是一款设计上从服务器端到桌面应用再到嵌入式都全面考虑的多用途虚拟机。

  4. Sun Mobile-Embeadded VM / Meta-Circular VM
    主要是用于移动和嵌入式开发相关的虚拟机

    扫描二维码关注公众号,回复: 9954920 查看本文章
  5. Azul VM / BEA Liquid VM

    是运行于 Azul Systems 公司专用硬件Vega系统上的Java虚拟机

  6. Apache Harmony / Google Android Dalvik VM / Microsoft JVM /其他

总结:

本文重点主要是让大家对jvm有一些大致的了解,毕竟这比较抽象,对相关概念要先有一定的了解,后续再逐渐深入。
参考文献:《深入理解Java虚拟机–JVM高级特性与最佳实践》周志明 著
下一篇:jvm虚拟机详解(二)-----jvm内存模型

发布了5 篇原创文章 · 获赞 0 · 访问量 107

猜你喜欢

转载自blog.csdn.net/weixin_43439748/article/details/103577012