面试官:Java虚拟机是什么,Java虚拟机的内存模型是什么样子的?

哈喽!大家好,我是小奇,一个专给面试官添堵的撑序员
小奇打算以轻松幽默的对话方式来分享一些技术,如果你觉得通过小奇的文章学到了东西,那就给小奇一个赞吧
文章持续更新,可以微信搜索【小奇JAVA面试】第一时间阅读,回复【资料】更有我为大家准备的福利哟!

文章目录

  • 一、前言
  • 二、面试
  • 三、总结

一、前言

最近关注一个公司好久了, 但是他们居然说已经招收到合适的人了,那我肯定不能坐以待毙。。。

在这里插入图片描述

二、面试

面试官:我看你简历上写的精通Java虚拟机?

我:准确来说不是精通,而是登峰造极。

面试官:那你说一下JVM虚拟机的内存模型吧

我:JVM虚拟机中有一个运行时数据区,里面主要分为程序计数器、虚拟机栈、本地方法栈、堆、方法区

在这里插入图片描述

面试官:能不能详细介绍一下这几个区域都是干什么的吗

1.程序计数器:简单来说每一个线程在执行代码的时候执行到哪一行是有一个记录的,比如线程A执行到代码第10行了这个时候在线程A中是有一个程序计数器来记录10这一行。程序计数器在线程中是私有的。那么他有什么好处呢?虽然我们开发的时候可以使用多线程来开发,但是CPU在执行A线程的时候B线程就需要等待,等到CPU去执行A线程的时候B线程又需要等待了,所以说如果这个时候CPU去执行B线程,那么执行完后再回来执行A线程的时候就知道之前执行到哪一行了,可以从这一行接着执行。

2.虚拟机栈:与程序计数器一样,虚拟机栈也是线程私有的,虚拟机是栈是存放执行方法的时候用到的一些信息,例如在执行方法的时候虚拟机就会创建一个栈帧用于存储局部变量表(表里是局部变量)、操作数栈(如果要进行一些数的计算,那么会把数先读取到操作数栈中进行操作最后赋值到局部变量表中)、动态链接、方法出口等信息。

3.堆:堆是线程共享的,堆是虚拟机所管理的内存中最大的一块,一般优化就是优化这块内存,比如我们Student st = new Student();那么我们新创建出来的对象就在堆内存里。

4.本地方法栈:本地方法栈是用来执行本地方法的时候所使用的,例如Java中我们会看到很多Native方法,这些方法使用例如c语言写的,Java中只是调用。

在这里插入图片描述

5.方法区:方法区是线程共享的,它用于存储已被虚拟机加载的类型信息、常量、静态变量等。在方法区中还包含一个运行时常量池部分,这一部分用于存放编译期生成的各种字面量与符号引用,这部分内容将在类加载后存放到方法区的运行时常量池中,所谓符号引用其实就是将一个例如main方法这个方法引用转化为指针应用,可以更加快速的找到这个方法在磁盘中的真正位置

面试官:确实有些东西,那你继续关注我们公司吧,等有空位了你再来?

我:奸商啊。。。

三、总结

文章后面持续更新,建议收藏。

文章中涉及到的命令大家一定要像我一样每个都敲几遍,只有在敲的过程中才能发现自己对命令是否真正的掌握了。

如果觉得我的文章还不错的话就点个赞吧,另外可以微信搜索【小奇JAVA面试】的好文章,获取我为大家准备的资料。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于WEB的旅游推荐系统设计与实现

TOC springboot280基于WEB的旅游推荐系统设计与实现 第1章 绪论 1.1选题动因 当前的网络技术,软件技术等都具备成熟的理论基础,市场上也出现各种技术开发的软件,这些软件都被用于各个领域,包括生活和工作的领域。随着电脑和笔…

SVN权限控制解析

一、基础数据说明 1. 代码目录存在多级 图1-1 SVN目录 如图1-1: 第一级目录是 科顺,代表 科顺项目,项目文件包括 文档、代码等等。第二级目录 分别是 2.1 resources 用于存放文档,开发和实施均需…

Qt登录窗口

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget),btn(new QPushButton("取消", this)),login_btn(new QPushButton("登录", this)) { ui->setupUi(this);thi…

Llama 3.1深度解析:405B、70B及8B模型的多语言与长上下文处理能力

Llama 3.1 发布了!今天我们迎来了 Llama 家族的新成员 Llama 3.1 进入 Hugging Face 平台。我们很高兴与 Meta 合作,确保在 Hugging Face 生态系统中实现最佳集成。Hub 上现有八个开源权重模型 (3 个基础模型和 5 个微调模型)。 Llama 3.1 有三种规格: …

法线纹理贴图计算(切线空间世界空间)

效率: 在切线空间中计算,效率更高,因为可以在顶点着色器中就完成对光照、视角方向的矩 阵变换,计算量相对较小。( 矩阵变换在顶点着色器中计算) 在世界空间中计算,效率较低,由于需要对法线贴图进行采样&a…

mybatis druid postgresql statement超时原理原理

yaml设置超时 mybatis-plus:mapper-locations: classpath:/mapper/*.xml # MyBatis Mapper XML文件的位置type-aliases-package: com.company.mi.entity # 实体类所在的包configuration:default-statement-timeout: 10 configuration 设置超时 BaseStatementHandler设置超时 …

Thread 类的基本用法

目录 什么是线程? 编写多线程程序 线程创建的方式 继承 Thread 类,重写 run 方法 实现 Runnable 接口,重写 run 方法 匿名内部类创建 Thread 子类 匿名内部类创建 Runnable 子类对象 lambda表达式 Thread 类和常用方法 Thread 的常…

node.js part1

Node.js Node.js 是一个跨平台JavaScript 运行环境,使开发者可以搭建服务器端的 JavaScript 应用程序。作用:使用Node.js编写服务器端程序 编写数据接口,提供网页资源浏览功能等等 前端工程化:为后续学习Vue和React等框架做铺垫. …

基于CDIO概念的人工智能物联网系统开发与实施的人才培养研究

目录 1. 引言(Introduction) 2. AIoT技术及其培训特点(The Characteristics of AIOT and Its Training) 3. 基于CDIO概念的AIoT课程改革(CDIO Concept-based Reform of AIOT Course) 4. AIoT课程内容安…

Idea里配置Maven版本

一、安装Maven 1. 官网下载maven地址: Maven – Download Apache Maven Binary是可执行版本,已经编译好可以直接使用。 Source是源代码版本,需要自己编译成可执行软件才可使用。tar.gz和zip两种压缩格式,其实这两个压缩文件里面包含的内容是…

Verilog刷题笔记50

题目: Given the following state machine with 1 input and 2 outputs: 解题: module top_module(input in,input [9:0] state,output [9:0] next_state,output out1,output out2);assign next_state[0]~in&(state[0]|state[1]|state[2]|state[3]…

Java方法01:什么是方法

本节视频链接:Java方法01:什么是方法?_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV12J41137hu?p45&vd_sourceb5775c3a4ea16a5306db9c7c1c1486b5 Java中的‌方法‌是一段执行特定任务的代码片段,‌它是程序的基本构…

C#中的S7协议

S7协议-S7COMM S7COMM 进行写 CTOP->PDU type已知枚举值 0X0E连接请求0x0d连接确认0x08断开请求0x0c断开确认0x05拒绝访问0x01加急数据0x02加急数据确认0x04用户数据0x07TPDU错误0x0f数据传输 S7Header->ROSCTR已知枚举值 0X01JOB REQUEST。主站发送请求0x02Ack。从站…

Android MediaRecorder 视频录制及报错解决

目录 一、start failed: -19 二、使用MediaRecorder录制视频 2.1 申请权限 2.2 布局文件 2.3 MediaRecordActivity 2.4 运行结果 三、拓展 3.1 录制视频模糊(解决) 3.2 阿里云OSS上传文件 3.2.1 权限(刚需) 3.2.2 安装SDK 3.2.3 使用 相关链接 一、start failed…

基于spring boot的小型诊疗预约平台的设计与开发

TOC springboot262基于spring boot的小型诊疗预约平台的设计与开发 绪论 1.1 研究背景 当前社会各行业领域竞争压力非常大,随着当前时代的信息化,科学化发展,让社会各行业领域都争相使用新的信息技术,对行业内的各种相关数据进…

C++之模版初阶

目录 前言 1.泛型编程 2.函数模版 2.1函数模版概念 2.2函数模版格式 2.3函数模版的原理 2.4函数模版的实例化 2.5模版参数的匹配原则 3.类模版 3.1类模版的定义格式 3.2类模版的实例化 结束语 前言 前面我们学习了C的类与对象和内存管理,接下来我们继续学习…

【等保测评】Mysql测评中使用的命令汇总

一、身份鉴别 a) 应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换; mysql -uroot -p 查看登录是否需要输入口令鉴别用户身份 select user,host from mysql.user 查看是否存在相同账户…

苹果手机怎么清理重复照片的解决方案

随着智能手机摄像头技术的飞速发展,我们越来越依赖iPhone来记录生活中的点点滴滴。不可避免地,这也导致了大量重复照片的产生,这些重复照片不仅占用了宝贵的存储空间,还使得照片库显得混乱无序。本文将介绍苹果手机怎么清理重复照…

【项目实战】C++视频共享点播系统

目录 一、项目介绍 1.1 对视频共享点播系统的认识 1.2服务端程序负责功能 1.3 服务端功能模块划分 1.4 项目界面演示 1.5预备知识 二.环境搭建 2.1 安装 Jsoncpp 库 2.1.1 使用jsoncpp 2.2 引入httplib库 2.2.1 安装Git(如果你的系统尚未安装Git&#xf…

【算法】弗洛伊德(Floyd)算法求最短路径

目录 1.弗洛伊德(Floyd)算法介绍 2.弗洛伊德算法图解分析 2.1思路: 2.2图和矩阵的准备 2.3弗洛伊德算法的步骤: 2.4疑问 3.弗洛伊德算法的代码实现 3.1创建图并显示距离表与前驱表 3.2完整代码 1.弗洛伊德(Flo…