JVM——1.JVM概述

news2024/9/25 19:16:52

从这篇文章开始,我们来学习一下jvm

目录

1.JVM的定义

2.JVM的好处

3.与JVM相关概念的解释

4.常见的JVM

5.JVM的主要内容

6.总结

1.JVM的定义

JVM,全称:Java Virtual Machine ,即Java虚拟机,是Java程序的运行环境,更确切的说,是Java二进制字节码的运行环境。

解释:

我们的第一个Java的hello world程序是在记事本上编写的,然后用javac命令,将其编译为.class文件,然后再用java命令来运行它。其中用javac命令将java代码编译成.class字节码文件(这个编译过程应该是JDK里面的编译工具实现的),然后JVM中的类加载器将这些字节码文件加载到JVM的内存中,而最终使用java命令来运行程序也是在JVM上运行的。这就是JVM,是java的运行环境。

2.JVM的好处

使用JVM的好处:

  1. 一次编写,到处运行。因为java程序是依赖于JVM运行的,不依赖于具体的操作系统。所以只要你的计算机能安装运行JVM,那么就能编写运行java程序。
  2. 可以自动内存管理,有垃圾回收功能。与java同时期的C和C++是没有自动垃圾回收功能的,需要我们自己进行垃圾回收
  3. JVM可以进行数组下标越界检查,防止越界的数组元素覆盖其他内存空间的内容
  4. JVM也是实现多态的关键因素。多态是面向对象编程的重要特征之一,而JVM是实现多态的重要因素

3.与JVM相关概念的解释

与JVM相关的还有jre,jdk等相关概念,下面看一下他们之间的关系:

JVM,即java虚拟机,它可以屏蔽我们的java代码和底层操作系统之间的差异,使得我们不必关心底层的操作系统。

4.常见的JVM

本质上来说,JVM是一套规范。只要遵循这套规范,我们就可以自己开发一套JVM。下面来看一下常见的JVM

这些了解一下就可以了

5.JVM的主要内容

下面来看一下JVM的大体主要内容:

首先,我们写好一个java程序,然后这个java程序由JDK中的编译工具将其编译为java的二进制字节码文件,然后类加载器将这些二进制的字节码文件加载的JVM的内存中,然后在JVM中由JVM的执行引擎进行逐行执行代码。这就是整个过程。

其中各个模块是干什么的,有什么特点,是怎么做的,后面会具体讲

6.总结

这篇文章主要就是讲了一下什么是JVM,JVM是干啥的,JVM怎么干的,包含哪些东西,只是粗略的讲了一下。后面会具体的讲解。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1013934.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Docker从认识到实践再到底层原理(五)|Docker镜像

前言 那么这里博主先安利一些干货满满的专栏了! 首先是博主的高质量博客的汇总,这个专栏里面的博客,都是博主最最用心写的一部分,干货满满,希望对大家有帮助。 高质量博客汇总 然后就是博主最近最花时间的一个专栏…

OpenCV(四十四):亚像素级别角点位置优化

1.角点位置亚像素位置优化原理介绍 亚像素优化的原理在于通过对初始角点位置的微小调整,利用更精确的灰度信息,来获取更准确的角点位置。传统的角点检测算法基于像素级别的灰度变化来定位角点,而亚像素优化则进一步利用图像灰度的局部变化进行…

DataInputStream数据读取 Vs ByteBuffer数据读取的巨大性能差距

背景: 今天在查找一个序列化和反序列化相关的问题时,意外发现使用DataInputStream读取和ByteBuffer读取之间性能相差巨大,本文就来记录下这两者在读取整数类型时的性能差异,以便在平时使用的过程中引起注意 DataInputStream数据…

#循循渐进学5单片机#中断与数码管动态显示#not.5

1、掌握C语言数组的概念、定义和应用。 1)数组是一组变量,这组变量需要满足三个条件: 具有相同的数组类型 具有相同的名字 在存储器中是连续的 2)声明和初始化 数组类型 数组名【数组长度】 数组类型 数组名【数组长度】 …

批量多字段唯一性校验

批量多字段唯一性校验 思路: 查询列表本身是否含有重复数据新增修改分开考虑,新增只考虑数据库中是否有相同数据,修改不仅要考虑数据库中是否有相同数据,还要排除自身。由于是批量校验,排除自身只需考虑所有修改操作…

LeetCode【3. 无重复字符的最长子串】

工欲善其事必先利其器 题目:给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。 public int lengthOfLongestSubstring(String s) {int n s.length();int[] charIndex new int[128]; // 用于存储字符的索引,ASCII字符集共有…

docker 操作redis

1查看容器 2进入容器 exec表示在运行的容器中执行命令it表示以终端交互的方式执行命令/bin/bash表示需要指定的命令 3进入容器后可通过redis-cli命令连接容器内的redis服务器,可通过set创建变量,get获取变量的值 4key * 查看所有key 通过ping 查看redi…

使用node实现websocket

使用node实现websocket 什么是websocket websocket代表了Web应用程序通信方式的根本转变。不同于传统的HTTP请求响应周期,即客户端从服务器请求数据并等待响应,websocket在客户端和服务器之间建立一个持久的全双工连接。这意味着一旦建立了websocket&a…

电力系统IEEE14节点系统同步模型(Simulink)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

深度解析shell脚本的命令的原理之mv

mv 是 Unix 或 Linux 中的一个基本命令,用于移动或重命名文件和目录。以下是对这个命令的深度解析: 基本操作:mv 命令的基本操作是将一个或多个源文件或目录移动到一个目标文件或目录,或者重命名源文件或目录。这是通过改变文件系…

【算法训练-队列 一】【结构特性】用两个栈实现队列

废话不多说,喊一句号子鼓励自己:程序员永不失业,程序员走向架构!本篇Blog的主题是【队列的结构特性】,使用【队列】这个基本的数据结构来实现,这个高频题的站点是:CodeTop,筛选条件为…

腾讯mini项目-【指标监控服务重构】2023-08-04

今日已办 关于 span-references 的调研 https://github.com/DataDog/dd-trace-js/issues/1761 https://github.com/open-telemetry/opentelemetry-specification/blob/874a451e7f6ac7fc54423ee3f03e5394197be35b/specification/compatibility/opentracing.md#span-references h…

前端面试的话术集锦第 17 篇博文——高频考点(TCP知识点)

这是记录前端面试的话术集锦第十七篇博文——高频考点(TCP知识点),我会不断更新该博文。❗❗❗ 首先还是先来解答这个常考面试题关于TCP部分的内容,然后再详细去学习这个协议。 1. UDP 与 TCP 的区别是什么? TCP基本是和UDP反着来,建立连接断开连接都需要先需要进行握手…

VR虚拟仿真在旅游课堂教学演示

首先,VR虚拟仿真能够为学生提供逼真的旅游体验。传统的旅游课堂教学主要以图片、文字和视频为主要教学工具,这无法给学生带来身临其境的感觉。而VR技术能够通过360度全景视角、立体声音和触觉反馈等功能,将学生置身于虚拟的旅游场景中。无论是…

软件测试/测试开发丨Web自动化—capability参数配置 学习笔记

点此获取更多相关资料 本文为霍格沃兹测试开发学社学员学习笔记分享 原文链接:https://ceshiren.com/t/topic/27336 一、capability概述 capability是webdriver支持的标准命令之外的扩展命令(配置信息)配置web驱动属性,如浏览器名…

基于element-ui的年份范围选择器

基于element-ui的年份范围选择器 element-ui官方只有日期范围和月份范围选择器,根据需求场景需要,支持年份选择器,原本使用两个分开的年份选择器实现的,但是往往有些是不能接受的。在网上找了很多都没有合适的,所以打…

数据结构与算法--排序算法复习

目录 1.三种常见的简单排序: 1.1冒泡排序 1.2 选择排序 1.3 插⼊排序 2 常见高级排序算法 2.1 希尔排序 2.2 快速排序 2.3 归并排序 2.4计数排序 先上结论: 1.三种常见的简单排序: 1.1冒泡排序 1.⾸先在未排序数组的⾸位开始&#…

Spring boot 实践(16)Nacos server 2.2.3 下载安装

1、Nacos server下载 登录网址Releases alibaba/nacos GitHub,进入下载页面,显示如下: 选择“nacos-server-2.2.3.zip”版本 解压缩,目录文件如下图所示: 配置文件位于“conf”目录下,名称为“applicat…

写作萝卜:基于人工智能的AI智能写作工具平台

【产品介绍】​ 名称​ 写作萝卜​ 具体描述​ 写作萝卜是一款一站式AI智能写作平台,它可以帮助用户快速完成各种类型的写作任务,如文章 改写、降重、生成、校对、转换等。​ 写作萝卜的核心功能是AI智能改…

arcgis js 缓冲区分析(GP服务)

arcgis文档中的有提供缓冲区的接口 geometryService,但要4.19后版本才提供 案例中使用的版本为4.16,因此这里的缓冲区分析借助gp工具 新建服务 1、打开arcmap 选择工具将要存放的文件夹,右键> new > Toolbox 对新建好的工具的mode…