当前位置: 首页 > news >正文

剖析一下自己的简历第二条

剖析一下自己的简历第二条

  • 背景
  • 前置说明
  • 可能会被问到的问题

背景

剖析一下自己简历, 增加对一些专业知识的掌握. 我的简历第二条是这样写的: “2. 熟悉JVM、JMM,包括内存模型,垃圾回收机制,了解其基本调优技巧并具备线上调优经验。”.

前置说明

大概是为了面试, 有些知识点是按照自己当前的认知和理解整理归纳的. 可能不太对, 但是愿意慢慢去优化和完善自己的知识体系.

可能会被问到的问题

  1. JVM 的基本结构是什么?
    • 回答:JVM 主要由以下几个部分组成:
      • 类加载器子系统:负责加载、链接和初始化类。
      • 运行时数据区:包括方法区、堆、虚拟机栈、本地方法栈和程序计数器。
      • 执行引擎:解释器、即时编译器(JIT 编译器)、垃圾回收器等。
      • 本地接口:与底层操作系统交互的部分。
      • 本地方法库:提供给 JVM 调用的本地方法。
        在这里插入图片描述
  2. 什么是 Java 内存模型(JMM)?
    • 回答:Java 内存模型定义了多线程程序中变量的访问规则,确保了不同线程之间内存操作的一致性。JMM 通过以下机制实现:
      • 原子性:保证某些操作是不可分割的。
      • 可见性:一个线程对共享变量的修改能够被其他线程看到。
      • 有序性:禁止指令重排序,确保程序按照预期的顺序执行。
        在这里插入图片描述
  3. ** 垃圾回收器常用的算法有哪些? **
  • 标记-清除(Mark-Sweep):标记出所有需要回收的对象,然后清除这些对象。
  • 复制(Copying):将存活对象从一个区域复制到另一个区域,然后清空原区域。
  • 标记-整理(Mark-Compact):标记出所有需要回收的对象,然后将存活对象移动到一端,清空另一端。
  • 分代收集(Generational Collection):将堆分成新生代和老年代,分别使用不同的收集算法。
    在这里插入图片描述
  1. **哪些对象可以是GCRoot对象? **
    也就是找到那些一定不是垃圾的对象
  • 虚拟机栈中的局部变量: 栈针中局部变量表中引用的对象是当前方法正在使用的对象, 一定不是垃圾对象.
  • 方法区中的类静态属性: 这个是类的属性, 只要类不被卸载, 我们就认为这个对象一定不是垃圾对象.
  • 方法区中的常量: 这个是在方法区的常量池中, 也是一直存活的对象, 所以也被认为是GCRoot对象.

    还有很多我这里记不住了, 可以自行百度, 回答几个就可以了, 面试而已…
    为了加深印象, 这个还是自己画一个图吧:
    在这里插入图片描述
  1. **常见的垃圾回收器都有哪些? **
  • 小内存应用:Serial 收集器
  • 多核 CPU 和高吞吐量:Parallel 收集器
  • 低延迟:CMS(Concurrent Mark Sweep) 或 G1 收集器
  • 极低延迟和大内存:ZGC 或 Shenandoah 收集器
  • 测试和基准测试:Epsilon 收集器
    这里记一下读音吧:
  • Serial 的发音是:['sɪr.i.əl]
  • Parallel 的发音是:['pær.ə.lel]
    这里找一个图留一个印象吧:
    // TODO 后续可以研究学习一下:
    在这里插入图片描述
  1. **JVM常用的命令和工具有哪些? **
  • jstack:主要用于生成线程转储,帮助诊断线程相关的问题,如死锁、长时间运行的任务等。
  • jmap:主要用于生成堆转储文件和显示堆中对象的统计信息,帮助分析内存使用情况。
  • jconsole:提供图形界面,用于实时监控 JVM 的各种指标,如内存使用情况、线程状态、类加载信息等。
    Arthas
    Eclipse MAT (Memory Analyzer Tool)
    // TODO 后续有时间可以尝试使用一下

http://www.mrgr.cn/news/79060.html

相关文章:

  • C++知识整理day3类与对象(下)——赋值运算符重载、取地址重载、列表初始化、友元、匿名对象、static
  • 基于vite6+ vue3 + electron@33 实现的 局域网内互传文件的桌面软件
  • unity与android拓展
  • “精神内耗”的神经影像学证据:担忧和反刍会引发相似的神经表征
  • 【Git操作】-- 将已存在的项目复制一份到另一个分组空间下
  • taro小程序马甲包插件
  • HCIA笔记6--路由基础与静态路由:浮动路由、缺省路由、迭代查找
  • 软件工程——期末复习(2)
  • 【SpringBoot】整合篇
  • 2024第六届金盾信安杯Web 详细题解
  • 软件工程——期末复习(1)
  • 网络命令配置
  • AD学习笔记·空白工程的创建
  • React 第九节 组件之间通讯之props 和回调函数
  • 重生之我在异世界学编程之C语言:深入指针篇(上)
  • 组合问题变式——选数(dfs)
  • 嵌入式硬件面试题【经验】总结----会不断添加更新
  • IDL学习笔记(二)IDL处理卫星数据
  • 使用playwright自动化测试时,npx playwright test --ui打开图形化界面时报错
  • L15.【LeetCode笔记】相同的树
  • 同时将scss全局变量注入、Tailwind样式使用、自己插件配置到vite
  • 汽车IVI中控OS Linux driver开发实操(二十七):常用Linux指令
  • 记录vite关于tailwindcss4.0-bate4出现margin[m-*]、padding[p-*]无法生效的问题。
  • 神经网络中的优化方法(一)
  • Android 应用单元测试涉及 Telephony 环境初始化问题
  • 浏览器的事件循环机制