日拱一卒 | JVM

文章目录

  • 什么是JVM?
  • JVM的组成
  • JVM的大致工作流程
  • JVM的内存模型

什么是JVM?

我们知道Java面试,只要你的简历上写了了解JVM,那么你就必然会被问到以下问题:

  • 什么是JVM?
  • 简单说一下JVM的内存模型?
  • 类的加载的过程是怎样的?
  • 什么叫内存溢出、堆栈溢出、逃逸分析?

大家可能大概知道JVM是个什么东西,但很难把他完全说清楚
这些零散的问题,如果没有一个结构来容纳,将会很难记忆,也很难联系起来

我们今天就系统的聊一下JVM,以及经常问到的关于JVM的面试题

JVM的组成

先看这张图
在这里插入图片描述
JVM共由四个模块组成,其中包含为两个子系统和两个组件,分别为:

  • class loader 类加载系统
  • execution engine 执行引擎子系统
  • runtime data area 运行时数据区组件
  • native interface 本地借口组件

面试中 最经常问到的就是 1、3两个,类加载器、内存模型。
相信大家都有体会~

那我们先来讲讲JVM工作的完整流程,再来详细讲讲这两个面试中最经常问到的两个组件。

JVM的大致工作流程

首先通过编译器把Java源代码转换成字节码,class loader类装载器再把字节码加载到内存中,将其放在运行时运行数据区的方法区内,而字节码文件仅是JVM的一套指令集规范,并不能直接交给底层操作系统去执行,因此需要特定的命令解析,执行引擎execution engine,将字节码翻译成底层的系统指令,再交给CPU去执行,而这个过程中需要调用其他语言的本地库接口,native interface来实现整个程序的功能。

好了,有了这个大概的认识,我们大概能了解每个部分分别的功能和作用。

下面我们来聊聊面试工程中经常问到的关于JVM的问题。

在这里插入图片描述

我们从最常问到的问题开始

JVM的内存模型

首先是内存模型内存模型,一共有五个单元,分别是程序计数器方法区对站和本地方法站这个如果直接来寄可能比较难寄,我们通过实际实验过程中内存创建的规律来记忆会更方便一些,首先一个县城创建,他会带出三个东西,分别叫做程序技术器和加虚拟之战以及本地方法站这三个单元

那另外两个单元方法区和堆就是县城共享的区域

我们分别说一下每一个区域它的功能新程序技术器,它是县城私有的一个县城创建之后,他就会有一个程序技术器,他存在的意义是当我们操作系统中现成数超过CPU的合数的时候,那我们执行如果就存在现场等待的情况,为了记住我们这个县城当前已经执行到哪个步骤了,所以就存在一个东西,要做程序技术器记录县城正在指执行的这个将要执行下一步骤的这个指令的地址

我们分别说一下每一个区域它的功能新程序技术器,它是县城私有的一个县城创建之后,他就会有一个程序技术器,他存在的意义是当我们操作系统中现成数超过CPU的合数的时候,那我们执行如果就存在现场等待的情况,为了记住我们这个县城当前已经执行到哪个步骤了,所以就存在一个东西,要做程序技术器记录县城正在指执行的这个将要执行下一步骤的这个指令的地址第二个东西叫做嘉华逊基站嘉兴站是每个县城都会有一个叫训练机站他从每这个站里会存在若干个战争,每个战争保存一个方法的入餐出餐静态变量,还有这个返回值等地址等等,再就是本地方发展本地方法,但他的作用和教训激战作用是类似的,只不过他提供的他是为这个本地方法native Mike提供这个战争战争的记录
第二个东西叫做嘉华逊基站嘉兴站是每个县城都会有一个叫训练机站他从每这个站里会存在若干个战争,每个战争保存一个方法的入餐出餐静态变量,还有这个返回值等地址等等,再有就是本地方发展本地方法,但他的作用和教训激战作用是类似的,只不过他提供的他是为这个本地方法native Mac提供这个战争战争的记录

OK,下面是性能调优的部分,我们这V M一共有哪些参数以及我们做G的性能分析工具有哪些工具这部分我们先跳过不讲

OK,下面是性能调优的部分,我们这V M一共有哪些参数?以及我们做G的性能分析工具有哪些工具这部分我们先跳过,不讲在下面就是执行模式,一个Clas文件在被执行时会经过哪些过程它的完整的生命周期是哪些?

然后就是类加载的过程,首先我们有一个基础知识叫做双庆委派机制双庆委派机制是什么就是当我们一个例假的气需要加载一个Clas的时候,他会先去找他的负累,询问他的负累,让他的副理信息加载这个类,如果他的父类加载不了,然后他再让他的负累的负累再来尝试加载如果,所有的父类加载不了才会上之类赖加载

所有的父类加载不了,再才会上之内赖加载常见的内下载器,一共有四种第一种是B strap类下载器,他是加载我们家最底层代码这个类,然后是ex深深立下的气,再是什么家的气,最后是自定义的那家的气

关于兵器优化一共有哪些内容?首先公共指表达式的消除以指令重拍内敛,还有我们比较常问道的陶艺分析理论,他分析的方法是什么?现场是怎么做到一分析的,还有我们线上是如何分配空间以及同步消除的。

关于兵器优化一共有哪些内容?首先公共指表达式的消除以指令重排内敛,还有我们比较常问道的陶艺分析理论,他分析的方法是什么?现场是怎么做到一分析的还有我们现站上是如何分配空间以及同步消除的一些问题,最后呢,就是我们的GCGC是一个更长见的问题,JC首先分为了两个问题,一个是分类回收,还有一是回收器的实现风带回收,我们可以分为这个新生代老年代,然后当然在最新的这个哪里会出去几万中出现了这个叫持久代这个概念

,最后呢,就是我们的GCGC是一个更长见的问题,JC首先分为了两个问题,一个是分类回收,还有一是回收器的实现风带回收,我们可以分为这个新生代老年代,然后当然在最新的这个那里会出去几万中出现了这个叫持久代这个概念回收期的实现有哪些?我们有创新的回收期,并且回收期C MSG o还有Z GC等等这些回收器。

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

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

相关文章

电脑系统安装软件,让系统安装变得更简单。

电脑原版操作系统下载:MSDN系统库 电脑U盘装机pe系统:优启通或微PE工具 驱动安装:360 驱动大师 电脑装机常用软件下载:https://www.bgrdh.com/favorites/7875.html

do while打印1~10

#include<stdio.h> int main() {int i 1;do{printf("%d", i);i;} while (i < 10);return 0; }

【JUC】LockSupport线程等待唤醒

文章目录 LockSupport线程等待唤醒机制三种让线程等待和唤醒的方法Object类中的wait和notify方法实现线程等待和唤醒Condition接口中的await和signal方法实现线程的等待和唤醒上述两种方法使用限制条件LockSupport类中的park等待和unpark唤醒LockSupport 是什么主要方法代码测试…

网易云音乐黑胶VIP会员免费领取入口直达词令是什么?

网易云音乐黑胶VIP会员免费领取是指网易云音乐VIP会员根据不同的等级尊享不同的权益&#xff0c;其中赠送礼品卡就是其一。不同等级的网易云音乐VIP会员可赠送的7天黑胶VIP会员张数不同&#xff0c;但是由于数量有限&#xff0c;每次更新后先领先得&#xff0c;我们将不定期根据…

SpringBoot3:轻松使用Jasypt实现配置文件信息加密

文章目录 前言一、概述1.1 Jasypt库简介1.2 Jasypt库的主要特点 二、开发环境三、Jasypt集成到SpringBoot33.1 引入依赖3.2 配置Jasypt3.3 加密配置文件信息3.3.1 方案一&#xff08;不推荐&#xff09;a.编写测试类生成加密后的配置文件信息b.运行c.修改原本的配置文件信息 3.…

vue实现电子签名、图片合成、及预览功能

业务功能&#xff1a;电子签名、图片合成、及预览功能 业务背景&#xff1a;需求说想要实现一个电子签名&#xff0c;然后需要提供一个预览的功能&#xff0c;可以查看签完名之后的完整效果。 需求探讨&#xff1a;后端大佬跟我说&#xff0c;文档我返回给你一个PDF的oss链接…

开源大模型的格式转成GGUF,并量化后使用ollama推理

https://github.com/ggerganov/llama.cpphttps://github.com/ggerganov/llama.cpp使用到的工具: llama.cpp ollama 步骤 1、下载llama.cpp,并使用make编译 2、新建conda环境,安装llama.cpp里所需的库(requirements.txt) 3、下载需要量化的模型

1. BES2700ZP概述

1. 概述 恒玄BES2700采用RTX5操作系统&#xff0c;配合mindmics算法或者自研算法。 RTX5相关接口可参考&#xff1a;RTX v5 Implementation 2. 芯片框架 2.1 内存 - 4MB 2.2 flash - 8MB

openmv 学习笔记(24电赛笔记)

模版匹配 模版匹配是一种计算机视觉技术&#xff0c;用于图像或者视频中查找特定的模版或者对象&#xff0c;查找模版可以是数字或者是物体&#xff0c;技术通过在目标图像中寻找与模版图像相似的区域来实现匹配。这种技术最早起源在 20世纪70年代 的图像处理领域。 使用模版匹…

《python程序语言设计》第6章14题 估算派值 类似莱布尼茨函数。但是我看不明白

这个题提供的公式我没看明白&#xff0c;后来在网上找到了莱布尼茨函数 c 0 for i in range(1, 902, 100):a (-1) ** (i 1)b 2 * i - 1c a / bprint(i, round(4 / c, 3))结果 #按题里的信息&#xff0c;但是结果不对&#xff0c;莱布尼茨函数到底怎么算呀。

无人机的飞行模式

无人机的飞行模式是提升飞行效率和完成特定任务的关键。现代无人机通常配备多种智能飞行模式&#xff0c;这些模式能够帮助飞行员高效且安全地完成飞行任务。以下是几种常见的无人机飞行模式及其应用场景的解析&#xff1a; 一、跟随模式 应用场景&#xff1a;跟随模式非常适…

【React】详解classnames工具:优化类名控制的全面指南

文章目录 一、classnames的基本用法1. 什么是classnames&#xff1f;2. 安装classnames3. 导入classnames4. classnames的基本示例 二、classnames的高级用法1. 动态类名2. 传递数组3. 结合字符串和对象4. 结合数组和对象 三、实际应用案例1. 根据状态切换类名2. 条件渲染和类名…

Halcon 设置处理区域AOI(用户交互,drawing_object)

主程序 * 1.加载并显示图片 ************************* read_image (Image, ./model)dev_get_window (WindowHandle) set_display_font (WindowHandle, 14, sans, true, false) dev_set_draw (margin) dev_set_line_width (3) dev_display (Image)* 读取字典文件 ************…

35.【C语言】详解函数递归

目录&#xff1a; 定义 作用 例子1~3 拓展学习 趣味练习 1.定义&#xff1a;函数自己调用自己&#xff08;递推回归&#xff09; int main() {main()return 0; } 这样容易死循环&#xff0c;导致爆栈(Stack Overflow) 所以需要设立限制条件&#xff0c;使执行时越来越接近条…

DOS攻击实验

实验背景 Dos 攻击是指故意的攻击网络协议实现的缺陷或直接通过野蛮手段&#xff0c;残忍地耗尽被攻击对象的资源&#xff0c;目的是让目标计算机或网络无法提供正常的服务或资源访问&#xff0c;使目标系统服务系统停止响应甚至崩溃。 实验设备 一个网络 net:cloud0 一台模…

顺序表算法题

在学习了顺序表专题后&#xff0c;了解的顺序表的结构以及相关概念后就可以来试着完成一些顺序表的算法题了&#xff0c;在本篇中将对三道顺序表相关的算法题进行讲解&#xff0c;希望能对你有所帮助&#xff0c;一起加油吧&#xff01;&#xff01;&#xff01; 1.移除元素 2…

SpringBoot知识笔记

一、基本概念 1.1 特性 起步依赖 自动配置 其它特性:内嵌的Tomcat、Jetty(无需部署WAR文件),外部配置,不需要XML配置(properties/yml)。 1.2 配置文件 SpringBoot提供了多种属性配置方式 //application.properties server.port=9090 server.servlet.context-path…

Linux下Centos7中的gcc/g++

命为志存。 —— 朱熹 Linux中C/C翻译过程 1、样例介绍1、1、gcc版本过低不能编译成功1、2、编写 .cxx或.cc或.cpp代码(都是C) 2、程序的翻译过程2、1、条件编译(补充)2、2、语言历史 3、深入理解链接3、1、静态链接的使用场景 1、样例介绍 1、1、gcc版本过低不能编译成功 in…

前端自动化测试(一):揭秘自动化测试秘诀

目录 [TOC](目录)前言自动化测试 VS 手动测试测试分类何为单元测试单元测试的优缺点优点缺点 测试案例测试代码 测试函数的封装实现 expect 方法实现 test 函数结语 正文开始 &#xff0c; 如果觉得文章对您有帮助&#xff0c;请帮我三连订阅&#xff0c;谢谢&#x1f496;&…

android(安卓)最简单明了解释版本控制之MinSdkVersion、CompileSdkVersion、TargetSdkVersion

1、先明白几个概念 &#xff08;1&#xff09;平台版本&#xff08;Android SDK版本号&#xff09; 平台版本也就是我们平时说的安卓8、安卓9、安卓10 &#xff08;2&#xff09;API级别&#xff08;API Level&#xff09; Android 平台提供的框架 API 被称作“API 级别” …