【JVM】<Java虚拟机>JVM架构&各种**虚拟机

简介: 【1月更文挑战第26天】【JVM】<Java虚拟机>JVM架构&各种**虚拟机

 

image.gif编辑

目录

一、Java代码执行流程:

二、JVM架构模型:

1.这两种架构之间的区别:

2.反编译指令:

在IDEA中查看字节码:

三、JVM的生命周期:

1.虚拟机的启动:

2.虚拟机的执行:

3.虚拟机退出:

四、JVM发展历程:

1.Sun Classic VM:

2.Exact VM:

3.HotSpot VM:

4.BEA JRockit:

5.IBM J9:

6.KVM CDC/CLDC Hotspot:

7.Azul VM:

8.Liquid VM:

9.Apache Harmony:

10.Microsoft JVM:

11.Taobao JVM:

12.Dalvik VM:

13.Greal VM:


image.gif编辑

一、Java代码执行流程:

image.gif编辑


二、JVM架构模型:

       Java编译器输入的指令流基本上是一种基于栈的指令集架构,另外一种指令集架构则是基于寄存的指令集架构

1.这两种架构之间的区别:

    • 基于栈式架构的特点:
      • 设计和实现更简单,适用于资源受限的系统
      • 避开了寄存器的分配难题:使用零地址指令方式分配
      • 指令流中的指令大部分是零地址指令,其执行过程依赖于操作栈。指令集更小,编译器容易实现。
      • 不需要硬件支持,可移植性更好,更好实现跨平台
        • 基于寄存器架构的特点:
          • 典型的应用是x86的二进制指令集:比如传统的PC以及Android的Davlik虚拟机。
          • 指令集架构则完全依赖硬件,可移植性差
          • 性能优秀和执行更高效;
          • 花费更少的指令去完成一项操作。
          • 在大部分情况下,基于寄存器架构的指令集往往都以一地址指令、二地址指令和三地址指令为主,而基子栈式架构的指令集却是以零地址指令为主

            2.反编译指令:

            javap -v 字节码文件名

            image.gif

            在IDEA中查看字节码:

            image.gif编辑


            三、JVM的生命周期:

            1.虚拟机的启动:

                   Java虚拟机的启动是通过引导类加载器(Bootstrap class loader)创建一个初始类(Initial class)来完成的,这个类是由虚拟机的具体实现指定的。

            2.虚拟机的执行:

              • 一个运行中的Java虚拟机也有一个清晰的任务:执行Java程序
              • 程序开始执行时,虚拟机才开始执行,程序结束就停止
              • 执行一个所谓的Java程序的时候,真真正正在执行的是一个叫做Java虚拟机的进程

              3.虚拟机退出:

                     如果出现以下情况,虚拟机将退出:

                • 程序正常执行结束
                • 程序在执行过程中遇到了异常或错误而异常终止
                • 由于操作系统出现错误而导致Java虚拟机进程终止
                • 某线程调用Runtime类或System类的exit方法,或Runtime类的halt方法,并且Java安全管理器也允许这次exit或hait操作。
                • JNI(Java Native Interface)规范描述了用JNI Invocation API来加载或卸载Java虚拟机时,Java虚拟机的退出情况

                四、JVM发展历程:

                1.Sun Classic VM:

                image.gif编辑

                2.Exact VM:

                image.gif编辑

                3.HotSpot VM:

                image.gif编辑

                4.BEA JRockit:

                image.gif编辑

                5.IBM J9:

                image.gif编辑

                6.KVM CDC/CLDC Hotspot:

                image.gif编辑

                7.Azul VM:

                image.gif编辑

                8.Liquid VM:

                image.gif编辑

                9.Apache Harmony:

                image.gif编辑

                10.Microsoft JVM:

                image.gif编辑

                11.Taobao JVM:

                image.gif编辑

                12.Dalvik VM:

                image.gif编辑

                13.Greal VM:

                image.gif编辑

                image.gif编辑


                相关文章
                |
                17天前
                |
                Oracle Java 关系型数据库
                java体系结构和jvm
                java体系结构和jvm
                |
                1月前
                |
                消息中间件 架构师 NoSQL
                咕炮课堂Java架构师课程
                针对1-5年经验开发者,【Java架构师培训】聚焦互联网热门技术,如Redis、MongoDB、Dubbo、Zookeeper、Kafka,讲授高并发、高可用分布式解决方案。由资深讲师指导,提升技术水平。
                30 2
                咕炮课堂Java架构师课程
                |
                28天前
                |
                缓存 Java C#
                【JVM故障问题排查心得】「Java技术体系方向」Java虚拟机内存优化之虚拟机参数调优原理介绍(一)
                【JVM故障问题排查心得】「Java技术体系方向」Java虚拟机内存优化之虚拟机参数调优原理介绍
                79 0
                |
                3天前
                |
                监控 Ubuntu Java
                Java VisualVM远程监控JVM
                Java VisualVM远程监控JVM
                Java VisualVM远程监控JVM
                |
                9天前
                |
                缓存 监控 Java
                深入理解Java虚拟机(JVM)性能调优
                【4月更文挑战第18天】本文探讨了Java虚拟机(JVM)的性能调优,包括使用`jstat`、`jmap`等工具监控CPU、内存和GC活动,选择适合的垃圾回收器(如Serial、Parallel、CMS、G1),调整堆大小和新生代/老年代比例,以及代码优化和JIT编译策略。通过这些方法,开发者能有效提升应用性能并应对复杂性挑战。性能调优是持续过程,需伴随应用演进和环境变化进行监控与优化。
                |
                10天前
                |
                负载均衡 Java 开发者
                细解微服务架构实践:如何使用Spring Cloud进行Java微服务治理
                【4月更文挑战第17天】Spring Cloud是Java微服务治理的首选框架,整合了Eureka(服务发现)、Ribbon(客户端负载均衡)、Hystrix(熔断器)、Zuul(API网关)和Config Server(配置中心)。通过Eureka实现服务注册与发现,Ribbon提供负载均衡,Hystrix实现熔断保护,Zuul作为API网关,Config Server集中管理配置。理解并运用Spring Cloud进行微服务治理是现代Java开发者的关键技能。
                |
                22天前
                |
                消息中间件 安全 Java
                解密 Java 后台架构设计之道
                【4月更文挑战第5天】本文探讨了Java后台架构设计的最佳实践,包括分层架构、微服务、异步处理与消息队列、RESTful API设计、数据库优化、安全控制、容错高可用、配置管理、CI/CD和监控日志。强调了使用微服务、Spring Boot/Spring Cloud、异步消息队列、RESTful API、安全框架Spring Security等技术的重要性,以及监控和自动化部署在确保系统稳定性和效率上的关键角色。通过这些实践,开发者能构建高效、稳定且可扩展的后台系统。
                |
                1月前
                |
                分布式计算 安全 Java
                Java的三大体系架构:深入剖析Java的三大体系架构,包括Java SE、Java ME和Java EE等
                Java的三大体系架构:深入剖析Java的三大体系架构,包括Java SE、Java ME和Java EE等
                45 1
                |
                1月前
                |
                存储 缓存 安全
                [Java基础]——JVM内存模型
                [Java基础]——JVM内存模型
                |
                消息中间件 Java 中间件