jvm深入研究文档--整体概念

2023-09-13 11:19:54

 阿丹:

        精通JVM对于一个java工程师非常重要,要是深入了解了jvm就可以有效的面对下面的问题

  1. 程序调优:JVM的配置和调优对于程序的运行有着至关重要的影响。不同的业务场景需要不同的JVM配置,比如设置不同的垃圾收集器、调整新生代和老生代的内存配置和占比等。只有深入理解JVM,才能针对不同情况进行有效的调优,以满足程序高性能、低延迟等需求。
  2. 排查问题:在程序运行过程中,可能会出现各种问题,如内存溢出、GC频繁导致的高延迟等。只有深入理解JVM,才能有效地排查和解决这些问题。例如,通过查看GC日志,可以了解GC时导致高延迟的原因,并根据需要对JVM参数进行调整。
  3. 深入理解Java语言:通过学习JVM,可以更深入地理解Java这门语言,包括其底层执行过程、内存管理等。这有助于更好地理解Java语言的各种特性和行为,从而更好地进行程序设计和开发。
  4. 工具使用:有许多工具可以帮助我们观察和分析Java应用在运行时的行为和状态,如jmap、jvisualvm、jstat、jconsole等。只有深入理解JVM,才能有效地使用这些工具,从而提高Java应用的性能和稳定性。

整体流程图: 

 什么是JVM?

        JVM是Java Virtual Machine的缩写,意为java虚拟机。虚拟机是指通过软件模拟的具有完整硬件功能的、运行在一个完全隔离的环境中的完整的计算机系统。JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。

        JVM是Java程序运行的核心组件之一,它是Java程序执行过程中的重要环节。JVM提供了一个独立于硬件和操作系统的执行环境,使得Java程序能够在不同平台上具有跨平台的特性。在JVM上,Java字节码被解释和执行,它负责管理内存、执行线程、加载类和执行字节码等任务。

        总结来说,JVM是一种在物理计算机上模拟运行Java字节码的虚拟机,它使得Java程序可以在不同的平台上运行,提供了跨平台的特性。

        是java实现与硬件、操作系统无关的关键部分。

虚拟机的分类:

以下是每一种虚拟机的一些常见产品:

  1. 基于运行库的虚拟机:这种类型的虚拟机通过在应用程序和操作系统之间添加一个运行时库来工作。这个库负责将应用程序的请求翻译成可以在物理计算机上执行的指令。这类虚拟机的产品包括Java虚拟机(JVM)和.NET运行时环境(CLR)。
  2. 基于操作系统的虚拟机:这种类型的虚拟机在同一台计算机上模拟了多个独立的操作系统实例。每个实例都有自己的操作系统和应用程序。这类虚拟机的产品包括VMware ESXi和Microsoft Hyper-V。
  3. 基于硬件的虚拟机:这种类型的虚拟机通过模拟完整的硬件系统来工作,包括处理器、内存、存储和其他硬件资源。它们可以在上面运行整个操作系统。这类虚拟机的产品包括QEMU和Bochs。
  4. 系统虚拟机:这种类型的虚拟机模拟了整个系统,包括操作系统和硬件。它们可以用来运行一个完整的操作系统,如Linux或Windows。这类虚拟机的产品包括VMware Workstation和VirtualBox。
  5. 程序虚拟机:这种类型的虚拟机专门为特定的应用程序提供模拟的执行环境。它们可以用来运行特定的程序,如Java程序或Python程序。这类虚拟机的产品包括Java虚拟机和.NET框架的执行环境。

JVM解决了什么问题?

        JVM(Java虚拟机)解决了Java程序在不同平台和不同硬件环境下的可移植性和跨平台性问题。

        Java语言编写的程序是先被编译成字节码,然后由JVM解释执行。JVM在不同的操作系统上都有对应的实现,如Windows、Linux、macOS等。因此,只要有一个JVM,Java程序就可以在任何平台上运行,无需对每个平台单独编译。

        另外,JVM还提供了内存管理、垃圾回收、安全性、类加载等一系列的功能,使得Java程序能够在复杂的系统环境中稳定、安全、高效地运行。

        总之,JVM使得Java成为一种真正意义上的跨平台语言,可以在不同的平台上运行,并且提供了各种必要的服务,使Java程序可以高效稳定地运行。  

JVM的关键组件有那些?

JVM的关键组件主要包括以下几个部分:

  1. 类加载器(Class Loader):类加载器是JVM的一个子系统,负责从文件系统、网络或其他来源加载Java类文件,并将其转换为可执行的Java对象。类加载器有三种类型:启动类加载器、扩展类加载器和应用程序类加载器。
  2. 执行引擎(Execution Engine):JVM的另一个子系统是执行引擎,负责执行Java字节码。Java虚拟机有两种执行引擎:HotSpot和J9。HotSpot引擎是默认的,也是最常用的。
  3. 运行时数据区(Runtime Data Area):运行时数据区是JVM的一个组件,用于存储运行时数据,如Java堆、方法区和本地方法栈等。Java堆是用于存储对象的内存区域,而方法区和本地方法栈则存储了类的元数据和线程的上下文信息等。
  4. 本地接口(Native Interface):本地接口允许Java程序调用本地方法,即使用Java编写的C或C++函数。通过本地接口,Java程序可以访问操作系统、硬件和其他资源。

        JVM的关键组件,这些组件共同协作,使得Java程序可以在JVM上运行并提供了跨平台性和安全性等功能。

更多推荐

软件设计师考试学习1

前言计算机组成原理及体系结构数据的表示进制的转换原码反码补码移码最高位是符号位,负数符号位为1反码补码正数和原码一样,负数有区别反码符号位不动,其他位置取反补码在反码基础上加1移码是将补码的符号为取反在原码和反码中,正0和负0的表示是不一样的而在补码中,正0和负0的表示都是00000000-128的补码是1000000

Java基于SpringBoot的财务管理系统,附源码,教程

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W+,Csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌文章目录一简介第二.主要技术第三、部分效果图第四章系统设计4.1功能结构4.2数据库设计4.2.1数据库E/R图4.2.2数据库表第五章系统功能实现5.

Android kotlin开源项目-功能标题目录

目录一、BRVAH二、开源项目标题目录1、RV列表动效2、拖拽与侧滑3、数据库4、树形图(多级菜单)5、轮播图与头条6、网络库7、表格标8、统计图表三、源码文件目录图一、BRVAHBaseRecyclerViewAdapterHelper简称BRVAH二、开源项目标题目录1、RV列表动效序号功能标题适配器、多个控件框架

《Web安全基础》08. 漏洞发现

web1:漏洞发现1.1:操作系统1.2:WEB应用1.3:APP应用1.4:API接口&系统端口1.4.1:API关键字1.4.2:服务&端口1.4.3:相关资源2:总结本系列侧重方法论,各工具只是实现目标的载体。命令与工具只做简单介绍,其使用另见《安全工具录》。1:漏洞发现1.1:操作系统相关资料:Goby官网:h

大模型时代下向量数据库的创新与变革

前言:在当今信息时代,数据库扮演着关键的角色,用于存储和管理各种类型的数据。向量数据库是一种专门设计用于高维数据存储和快速检索的数据库系统。在不断创新和变革后,腾讯云不久前发布了AI原生(AINative)向量数据库。文章目录向量数据库发展背景和现状AI加持下,向量数据库是否应该重新定义?取其精华,优势思考如何快速申请

面试算法题(shell/日志数据查询统计)

1,写一个shell脚本,实现mysql日志关键字查询,日志基于时间存放在不同的压缩包中#!/bin/bash#设置MySQL日志文件夹路径log_folder="/path/to/mysql/logs"#设置关键字keyword="your_keyword_here"#遍历日志文件夹下的所有压缩包forlogfile

Elastic Stack 8.10:更简单的跨集群搜索和身份验证等等

作者:TylerPerkins,GiladGal,ShaniSagiv,GeorgeKobar,MichaelPeterson,ArisPapadopoulosElasticStack8.10增强了跨集群和向量搜索、数据摄取、Kibana®和云注册。配置远程搜索时获得更大的灵活性,并提供更多信息来分类问题,从而促进跨集

演示spring AOP的切入表达式重用和优先级问题以及怎么实现基于xml的AOP

😀前言本篇的Spring-AOP系类文章第五篇讲解了演示springAOP的切入表达式重用和优先级问题以及怎么实现基于xml的AOP🏠个人主页:尘觉主页🧑个人简介:大家好,我是尘觉,希望我的文章可以帮助到大家,您的满意是我的动力😉😉在csdn获奖荣誉:🏆csdn城市之星2名⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣⁣

王江涛十天搞定考研词汇

学习目标:考研词汇学习内容:2023-9-17第一天考研词汇学习时间:2023-9-17学习产出:Aintellect智力;知识分子intellectual智力的;聪明的intellectualize使...理智化,对...做理性探索contempt轻视,蔑视contemptible可鄙的,可轻视的contemptuo

【企业级SpringBoot单体项目模板】 —— 全局配置

😜作者:是江迪呀✒️本文关键词:SpringBoot、模版、企业级☀️每日一言:你坚持下来了,而别人坚持不下来,这就是你的资本。文章目录一、全局异常配置1.1全局异常处理1.2处理业务异常类1.3状态码枚举类1.3使用二、返回体配置2.1返回体类2.2抽象controller2.3使用上回我们创建了一个SpringB

XC3420B 低压降压IC 5V降3.3V 大电流降压IC 开关频率1.5MHZ

XC3420B是一个1.5MHz的恒定频率,电流模式降压转换器。它非常适合需要单节鲤离子电池提供高达2A电流的便携式设备,同时在峰值负载条件下仍能实现90%以上的效率。XC3420B也可以运行在100%的低压差操作占空比,延长便携式系统的电池寿命,而轻载操作提供了非常低的输出纹波噪声敏感的应用。XC3420B可提供高达

热文推荐