面试必问

2023-11-18

25d591675d646088fa832f220d7f0798.png

若有收获,请记得分享和转发哦

对于工作3年左右的Java程序员来说,在面试大厂的过程中,面试官可能不会太关注你做了多少个项目、你的CRUD水平如何。更多的是关注你对某项技术点的理解深度,所以说,工作3年左右的小伙伴一定要把自己的重心放到技术的深度上来。

今天,我们先一起聊聊关于JVM性能调优的话题,本文的主要结构如下所示。

d27e8ca7df092173879d86935fbaad13.png

常见面试题

关于JVM,一道常见的面试题就是:Java中创建的对象是存储在JVM中的哪个区域的?

例如,这里,我们简单的列举一行代码,如下所示。

User user = new User();

关于上面的代码,不少小伙伴都知道,创建出来的User对象是放在JVM中的堆区域的,而User对象的引用是放在栈中的。但如果你只是了解到这种程度,那面试官就会认为你了解的太浅显了,可能就会达不到他们的要求。其实面试官想要了解你是否对JVM有一个更深入的认识。

站在面试官的角度来看这个问题时,回答创建出来的User对象是放在JVM的堆区,也并没有错。但是JVM的堆内存区域又会分为年轻代和老年代,而年轻代又会分为Eden区和Survivor区。JVM堆空间的逻辑结构如下图所示。

efac4a4fa1276cd61784078673da2162.png

而面试官更想了解的是你能不能说出来创建的对象具体是存放在JVM堆空间的哪个区域。

在JVM内部,会将整个堆空间划分成年轻代和老年代,年轻代默认会占整个堆内存空间的1/3,老年代默认会占整个堆内存空间的2/3。年轻代又会划分为Eden区和两个Survivor区,它们之间的默认比例是Eden:Survivor1:Survivor2 = 8:1:1。

61dee536e32299f4b554e5f9e20d050f.png

如果你能回答出 新创建的User对象是存放在JVM堆空间中年轻代的Eden区,那面试官就会对你刮目相看了。

6b810b41d010c3d55fcf07cb5a995a3e.png

5a324693f9377098938ad2bc2f09e872.png

0cf5495b5e818a66bbf688e57a658ae4.png

0f943388493f51c119629527d5b6d9ca.png

0c4f1b375f6325efa7e46a6c4b68cb2d.png

30f15590028c75c06e80aeacdcbe5c5f.png

a93448dc24ae2d65e54b4e8a4bfb328c.png

adb9683deed90a916019f5d01d71ffd3.png

2c163ce441ab7dfba7272c1d0c73f396.png

c6e814d92ca70379c4395e3fe2335c94.png

de81c2d5d053e001a0cd299227ee8b27.png

9556f3a4cd0ff94c361897b459fb6b35.png

bc0359ea2dff300c002ec474ef874024.png

b2f7b72c184bef30065580ef1d515149.png

875d9a7a714ade3515873ae8ee97eb6f.png

ace61ca3dd7c5e582eb5dddaa49607d2.png

d1156feb54aae298d646e8240de41981.png

48aa0854dc2e131dd97f721944070f78.png

f93d15b76963e0c878dc2c097b61a0d8.png

接下来,介绍了类的加载过程,主要包含:加载、验证、准备、解析和初始化等步骤,同时,说明了各个步骤的主要作用。

最后,介绍了JVM中常用的调优参数,涵盖堆、新生代、方法区(元空间)和栈(线程)常用的调优参数。并以Tomcat调优为例,详细说明了如何使用这些调优参数。

说了这么多你都掌握了吗?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

面试必问 的相关文章

随机推荐

  • 用python实现PyEcharts中的条形图,直方图

    用python实现PyEcharts中的条形图 直方图 笔记仅是个人的学习笔记总结 如有雷同请见谅 条形图 1 普通使用 from pyecharts charts import Bar 引用Faker来生成数据 from pyechart
  • IOS编程教程(十一):在故事板联线(Segue)中的不同视图控制器里传值

    这是我们演示故事板系列的第二篇文章 在前一个教程中 我们介绍了故事板 那是一个在Xcode中方便设计友好用户界面的功能 如果你跟着教程走 从开始到现在 你应该已经建立了一个简单的菜单应用程序的导航界面 但是上一篇我们有一件事没讨论 那就是如
  • table.getn(tableName) 的用法注意。

    转自 http blog sina com cn s blog 4a2e9af90100cv1z html 1 table getn tableName 等同于操作符 作用 得到一个table的大小 注意 该table的key必须是有序的
  • 启航2021

    1 企业数字化升级之路 附下载地址 点击标题 快速进入下载页面 近年来创新技术的不断升级迭代和突如其来的新冠疫情对各 各业数字化转型的推动 让企业管理者普遍认同数字化 智能化的企业运营模式 能够有效助 企业抗击 险 提升效能 获得 远发展
  • matlab-knn使用

    play with knn 1 什么是knn 1 1 什么是knn 1 2 knn适用范围 2 knn实验前的准备 2 1 knn的实验要点 3 knn的matlab实验 使用UCI数据集 3 0 KNN函数自带用例 3 1 UCI数据集
  • 3.docker仓库(Nexus、Harbor)的安装

    本文目录 前言 1 Aliyun 镜像仓库 2 Nexus 1 Nexus 私服搭建 2 登录控制台 3 配置nexus仓库 4 配置nexus仓库地址为安全的镜像地址 5 镜像推送至nexus仓库 6 拉取nexus仓库镜像 3 Harb
  • c++顺序表与链表的区别

    C Lists 链表 Lists将元素按顺序储存在链表中 与 向量 vectors 相比 它允许快速的插入和删除 但是随机访问却比较慢 说起这个访问速率呢 给大家举个很简单的例子 向量 vectors 也就是顺序表 它的存储方法就类似于c语
  • Exception in thread "main" java.lang.NoClassDefFoundError: XXX

    Exception in thread main java lang NoClassDefFoundError XXX编译时没有报错 一运行就不听话网上找了一大堆 各种解决方案都不是适合我 但是一片文章列举出了可能产生的原因https bl
  • Cpp关键字破解(三)【volatile】篇

    关键字总结 volatile 文章目录 关键字总结 volatile 0 前言 1 概念 2 作用 3 使用场景 4 volatile成员函数 5 代码体验 0 前言 参考几位前辈博客 汇总整理了一下 C 中volatile关键字的使用详解
  • Node.js文件系统模块——读写文件操作

    文章目录 前言 一 导入fs模块 1 readFile readFileSync 2 writeFile writeFileSync 3 appendFile appendFileSync 二 处理文件路径 1 dirname动态拼接路径
  • mysql的逻辑架构

    以一次查询为例 看一下从客户端发来sql 到执行完 整个过程mysql服务器做了哪些事 从整体上 分为三步 连接 对sql语句进行解析和优化 驱动引擎把数据交由文件系统存储 每一部分具体下来 就是这样一幅图 了解一条sql语句从客户端到服务
  • c语言中“

    一个竖杠 表示运算的或 二个竖杠 表示逻辑的或 c语言的位运算 取反 0取反是1 1取反是0 lt lt 是左移 比如1 lt
  • 系统架构设计师-数据库系统(1)

    目录 一 数据库模式 1 集中式数据库 2 分布式数据库 二 数据库设计过程 1 E R模型 2 概念结构设计 3 逻辑结构设计 三 关系代数 1 并交差 2 投影和选择 3 笛卡尔积 4 自然连接 一 数据库模式 1 集中式数据库 三级模
  • less命令打开两个或多个文件时切换文件的快捷键

    在使用 less 命令查看多个文件时 可以使用快捷键 n 和 p 来切换文件 输入 n 后 将切换到下一个文件 输入 p 后 将切换到上一个文件 如下图 less可以打开两个文件 使用快捷键就可以快速查看 而不用退出后再重新打开另一个文件了
  • 计算机专业PhD申请文书范文,美国统计学博士申请文书范文

    美国统计学博士申请文书范文推荐 美国博士申请文书个人陈述作用十分重要 本文为大家提供了一篇成功获取美国统计学博士申请的PS范文 希望大家可以从这一篇文章中得到一些有用的参考信息 I am applying for acceptance in
  • SQL 连接运算join

    连接运算是 8种关系运算 中的一种 五种JOIN方式 1 INNER JOIN or JOIN 2 OUTER JOIN 2 1LEFT OUTER JOIN or LEFT JOIN 2 2RIGHT OUTER JOIN or RIGH
  • 一图看懂 openpyxl 资料整理+笔记(大全)

    本文由 大侠 AhcaoZhu 原创 转载请声明 链接 https blog csdn net Ahcao2008 一图看懂 openpyxl 资料整理 笔记 大全 摘要 类结构图 一级模块目录 按字序 多级模块 按层级 模块级 doc 及
  • 【已更新代码图表】2023数学建模国赛E题python代码--黄河水沙监测数据分析

    E 题 黄河水沙监测数据分析 黄河是中华民族的母亲河 研究黄河水沙通量的变化规律对沿黄流域的环境治理 气候变 化和人民生活的影响 以及对优化黄河流域水资源分配 协调人地关系 调水调沙 防洪减灾 等方面都具有重要的理论指导意义 附件 1 给出
  • STM32---SPI

    SPI 1 SPI介绍 SPI主要应用在EEPROM FLASH 实时时钟 AD转换器 数字信号处理器 数字信号解码器 4条信号线 MISO 主设备输入 从设备输出引脚 主机从这条信号线读入数据 从机的数据由这条信号线输出到主机 即在这条线
  • 面试必问

    若有收获 请记得分享和转发哦 对于工作3年左右的Java程序员来说 在面试大厂的过程中 面试官可能不会太关注你做了多少个项目 你的CRUD水平如何 更多的是关注你对某项技术点的理解深度 所以说 工作3年左右的小伙伴一定要把自己的重心放到技术