JVM的基础介绍(1)

news2024/10/6 2:50:23

本文是“深入学习JVM”系列的第一篇文章,主要介绍JVM、JVM的3大子系统各自的功能。
我是蚊子码农,欢迎各位的点赞、关注和收藏,有了你们的激励,我会带来更好的作品。

一、JVM的介绍

JVM,即Java Virtual Machine,中文名Java虚拟机。
它的作用,就是将我们编写的项目代码,转化为操作系统可以理解的源码,进而在机器上运行。
它的突出本领,就是使得代码真正脱离机器,无论是哪种机器,只要实现了JVM,相同的class文件,就能得到相同的运行结果。
JVM运行于操作系统上,从操作系统的角度,它是一个普通的进程。而从Java开发者的角度出发,它实现了极好的封装,我们对其不甚了解,只知道它是运行Java项目所必备的工具。
尝试来剖析这个神秘的机器。

二、学习JVM,学什么?

JVM,相当于运行在操作系统上的操作系统,所以,我们从操作系统的角度来分析这个JVM。
我们知道,操作系统的五大功能是:内存管理、进程管理、CPU管理、存储管理和IO管理。

第一,内存管理策略

由于JVM毕竟不是真实的操作系统,所以我们主要学习的,是它先进的内存管理策略
我们都知道,在Java中,无需手动申请内存,也无需手动释放内存,这就是非常先进的“自动化内存管理策略”。

第二,性能调优策略

在实际工作中,我们很少直接和内存打交道,更多的是进行调优,所以调优方法也必不可少。

三、分析JVM

我们知道,在完成Java项目之后,我们需要先编译,才能使其在JVM上运行。
编译得到的是class文件,这种文件在JVM上,一定会被翻译成某种结构,进而能够运行。
这就是第一个学习的知识,class文件转化系统
无论class文件最终转化成什么结构,都需要将数据落实在内存上。
这就是第二个知识,运行时数据区
JVM是操作系统上的一个进程,那么它就能掌握一段时间的CPU,这时候,如何运行我们的main语句呢?
这就是第三个知识,执行引擎

四、结语

我是蚊子码农,如有补充或者疑问,欢迎在评论区留言。个人的知识体系可能没有那么完善,希望各位多多指正,谢谢大家。

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

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

相关文章

【游戏客户端】大话版本slg玩法正式上线~~

【游戏客户端】制作率土之滨Like玩法 大家好,我是Lampard家杰~~ 好久好久没有更新博客了,有不少大佬都在后台私信我催更,但是很悲伤这段时间都忙的不行QAQ 那在忙什么呢?就是在制作一个SLG类的玩法【帮派纷争】啦 ,布…

RNN、LSTM与GRU循环神经网络的深度探索与实战

循环神经网络RNN、LSTM、GRU 一、引言1.1 序列数据的迷宫探索者:循环神经网络(RNN)概览1.2 深度探索的阶梯:LSTM与GRU的崛起1.3 撰写本博客的目的与意义 二、循环神经网络(RNN)基础2.1 定义与原理2.1.1 RNN…

java 闭锁(CountDownLatch)

闭锁(CountDownLatch)是Java中的一个同步辅助类,用于协调多个线程之间的协作。它允许一个或多个线程等待,直到在其他线程中执行的一组操作完成。闭锁非常适用于需要等待一组事件发生之后再执行某些操作的场景。 import java.uti…

【Java】垃圾回收学习笔记(二):分代假说与垃圾回收算法

文章目录 0. 分代收集理论分代假说分代GC定义 1. 垃圾回收算法1.1 标记清除(Mark-Sweep)算法优点缺点 1.2 标记复制算法优点缺点为什么是8:1:1? 1.3 标记整理算法优点缺点 2. 是否移动? 0. 分代收集理论 分代假说 现在多数JVM G…

Python编程学习笔记(2)--- 列表简介

1、列表是什么 列表由一系列按特定顺序排列的元素组成。可以创建包含字母表中所有字母、数字、0~9或所有家庭成员姓名的列表;也可以将任何东西加入列表中,其中的元素之间可以没有任何关系。列表通常包含多个元素,因此给列表指定一个表示复数…

python库(6):Pygments库

1 Pygments介绍 在软件开发和文档编写中,代码的可读性是至关重要的一环。无论是在博客文章、技术文档还是教程中,通过代码高亮可以使程序代码更加清晰和易于理解。而在Python世界中,Pygments库就是这样一个强大的工具,它能够将各…

1.2 如何让机器说人话?万字长文回顾自然语言处理(NLP)的前世今生 —— 《带你自学大语言模型》系列

本系列目录 《带你自学大语言模型》系列部分目录及计划,完整版目录见:带你自学大语言模型系列 —— 前言 第一部分 走进大语言模型(科普向) 第一章 走进大语言模型 1.1 从图灵机到GPT,人工智能经历了什么&#xff1…

Powershell 获取电脑保存的所有wifi密码

一. 知识点 netsh wlan show profiles 用于显示计算机上已保存的无线网络配置文件 Measure-Object 用于统计数量 [PSCustomObject]{ } 用于创建Powershell对象 [math]::Round 四舍五入 Write-Progress 显示进度条 二. 代码 只能获取中文Windows操作系统的wifi密码如果想获取…

【绿色版】Mysql下载、安装、配置与使用(保姆级教程)

大家都知道,Mysql安装版的卸载过程非常繁琐,而且卸载不干净会出现许多问题,很容易让大家陷入重装系统的窘境。基于此,博主今天给大家分享绿色版Mysql的安装、配置与使用。 目录 一、Mysql安装、配置与使用 1、下载解压 2、创建…

02STM32软件安装新建工程

STM32软件安装&新建工程 1.软件安装:1.1Keil5 MDK安装1.2安装器件支持包离线安装支持包在线安装支持包 1.3软件注册:1.4安装驱动STLINK驱动JLink驱动在此文件夹下USB转串口 2开发方式&新建工程步骤&架构个人心得 1.软件安装: 安…

stm32精密控制步进电机(基础篇)

众所周知,步进电机由于使用脉冲控制,会比直流电机的控制稍难一些,但开环控制时也更加稳定。 落到做项目的时候,目前来说我都会先考虑步进电机,再去考虑直流,无刷这样的电机。包括毕设时所用的机械臂也是用…

Linux开发讲课33---线程实现与线程控制步骤简析

线程概述 进程是系统中程序执行和资源分配的基本单位。 每个进程都拥有自己的数据段、代码段和堆栈段,这就造成了进程在进行切换等操作时都需要有比较负责的上下文切换等动作。为了进一步减少处理机的空转时间支持多处理器和减少上下文切换开销,进程在演…

Java基础-内部类与异常处理

(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 一、Java 内部类 什么是内部类? 使用内部类的优点 访问局部变量的限制 内部类和继承 内部…

一位3D打印工程师繁忙的一天

早晨:准备与规划 7:00 AM - 起床与晨练 3D打印工程师早起进行晨练,如跑步或瑜伽,以保持身心健康。晨练后,享用一顿健康的早餐,为一天的繁忙工作做好准备。 8:00 AM - 检查邮件和项目进展 在开始工作前,先…

封装了一个仿照抖音效果的iOS评论弹窗

需求背景 开发一个类似抖音评论弹窗交互效果的弹窗,支持滑动消失, 滑动查看评论 效果如下图 思路 创建一个视图,该视图上面放置一个tableView, 该视图上添加一个滑动手势,同时设置代理,实现代理方法 (BOOL)gestur…

Zkeys三方登录模块支持QQ、支付宝登录

1,覆盖到根目录,并导入update.sql数据库文件到Zkeys数据库里 2. 后台系统权限管理,配置管理员权限-系统类别-找到云外科技,全部打勾 3,后台系统设置找到云外快捷登录模块填写相应的插件授权配置和登录权限配置&#x…

【python中级】图像从从笛卡尔坐标系转换为极坐标系

【python中级】图像从从笛卡尔坐标系转换为极坐标系 1.背景2.生成二维图3.极坐标转换1.背景 笛卡尔坐标系就是我们常说的直角坐标系。 笛卡尔坐标系,也称为直角坐标系,是由法国数学家和哲学家勒内笛卡尔(Ren Descartes)发明的一种二维或三维坐标系统。它使用两个或三个相互…

人工智能在病理切片虚拟染色及染色标准化领域的系统进展分析|文献速递·24-07-07

小罗碎碎念 本期文献主题:人工智能在病理切片虚拟染色及染色标准化领域的系统进展分析 这一期文献的速递,是有史以来数量最大的一次,足足有十一篇,本来打算分两期写,但是为了知识的系统性,我决定咬咬牙&…

texStudio使用(小白)

原先使用overleaf在线编译,可能eps格式的图片太大导致需要充钱,所以考虑本地安装 安装教程参考B站视频:B站Latex本地编译器安装:TexLive TextStudio 踩到坑: 1. 编译器位置要选择对 因为BibTex选成了Biber导致出现无…

minist数据集分类模型的训练

minist数据集训练 训练方法:利用pytorch来实现minist数据集的分类模型训练 训练模型如下图所示 模型代码: import torch from torch import nn from torch.nn import Flattenclass Net(nn.Module):def __init__(self):super().__init__()self.module …