前段时间,帮一个小老弟分割了一下字节的老同学,内推了一波,在一面的时候,体现相当不错,毕竟这玩意咱内推也怕推的人过来了不能满足需要打脸不是,可是在二面的时候出了问题,问这小子也不说,没方法,只能去分割一下老同学了
这不,花费一波吧老同学约进去吃顿饭,他通知我其实小老弟并不是个例,他倒没感觉有什么,不过他揭示了我让我通知小老弟当前面试的几个点,在这里我也分享给大家:
- 当面试官向你发问 JVM 的实战问题时,你是否感觉到莫衷一是?
- 想解决生产环境中的 GC 问题,你是否感觉到狗咬刺猬,无处下嘴?
- 面对 JVM 的海量参数,你是否感觉到迷茫无助?
- 看过很多的 JVM 文章,但当遇到了生产环境中实在问题的时候,你是否仍然不晓得如何进行剖析排查?
如果是这样,我感觉咱们大家先想分明在 金九银十 这个时间段“本人想要什么”最为重要
过后跟敌人聊了半天,其实最重要的还是“实战”!先来点高级的材料
帮忙大家回顾一下基础知识吧,是什么玩意引起的咱们须要进行 jvm 调优?
1. 什么是垃圾
C 语言申请内存:malloc free
C++:new delete
Java: new?
主动内存回收,编程上简略,零碎不容易出错,手动开释内存,容易出两种类型的问题:
遗记回收
屡次回收
没有任何援用对象的一个对象或者多个对象(循环援用)
2. 如何定位垃圾
- 援用计数
- 根可达算法
3. 常见的垃圾回收算法
- 标记革除 – 地位不间断 产生碎片
- 拷贝算法 – 没有碎片,节约空间
- 标记压缩 – 没有碎片,效率偏低
4.JVM 内存分代模型(用于分代垃圾回收算法)
- 局部垃圾回收器应用的模型
- 新生代 + 老年代 + 永恒代(1.7)/ 元数据区(1.8) Metaspace 永恒代 元数据 – Class 永恒代必须指定大小限度,元数据能够设置,也能够不设置,无下限(受限于物理内存)字符串常量 1.7 – 永恒代,1.8 – 对 MethodArea 逻辑概念 – 永恒代、元数据
- 新生代 = Eden + 2 个 suvivor 区 YGC 回收之后,大多数的对象会被回收,活着的进入 s0 再次 YGC,活着的对象 eden + s0 -> s1 再次 YGC,eden + s1 -> s0 年龄足够 -> 老年代(15 CMS 6)s 区装不下 -> 老年代
- 老年代固执分子老年代满了 FGC Full GC
- GC Tuning (Generation)尽量减少 FGCMinorGC = YGCMajorGC = FGC
5. 常见的垃圾回收器
- Serial 年老代 串行回收
- PS 年老代 并行回收
- ParNew 年老代 配合 CMS 的并行回收
- SerialOld
- ParallelOld
- ConcurrentMarkSweep 老年代 并发的,垃圾回收和应用程序同时运行,升高 STW 的工夫(200ms)
- G1(10ms)
- ZGC (1ms) PK C++
- Shenandoah
- Eplison
1.8 默认的垃圾回收:PS + ParallelOld
6.JVM 调优第一步,理解生产环境下的垃圾回收器组合
- JVM 参数分类规范:– 结尾,所有的 HotSpot 都反对非标准:-X 结尾,特定版本 HotSpot 反对特定命令不稳固:-XX 结尾,下个版本可能勾销 -XX:+PrintCommandLineFlags -XX:+PrintFlagsFinal 最终参数值 -XX:+PrintFlagsInitial 默认参数值
怎么样,看完下面的内容之后又没有什么感觉呢?是不是关上了尘封的记忆,那持续往下看
下面总结的 GC 的一些基础知识,那除了 GC 之外,JVM 还有哪些常识能够询问呢?
我把这些常识整顿成相应的常识图谱,对每一个知识点进行了相应的整顿以及内容的概括,然而还是须要各位学习的敌人依据本人的状况进行整顿
以这张脑图为核心,这些知识点你在面试之前要留神一下
第一局部
- 什么是垃圾?
- 如何定位垃圾?
- 罕用垃圾回收算法
- 罕用垃圾回收器
- 零碎上线前预估零碎的内存占用状况
- 零碎上线前预估零碎的并发拜访状况
- 依据预估值设定 JVM 初始参数
- 压力测试方法论
- 依据压测后果调整参数值
- 零碎上线后设定日志参数
- 定期察看日志状况
- 依据日志解决实战问题
第二局部
- 为什么一个百万级 TPS 零碎会频繁 GC?
- 定位 JVM 问题的实用参数设置
- 用 top 命令察看零碎运行状况
- 用 jps 定位虚拟机过程
- 用 jstat 定位 JVM 问题
- 用 jmap 导出内存转储文件
- 用 jstack 定位问题线程
- 用 jhat 剖析转储文件
- 其余给力的工具 visual VM,MAT,Arthas 介绍
- 实际操作(这是重点,毕竟绝知此事要躬行,不实际,有些是基本没方法确定会呈现哪些问题)
这两局部的内容,我曾经整顿好了相应的视频
须要这些视频材料的,关注 + 转发后,私信“材料”即可查看获取办法
不过,我不晓得各位怎么想,反正我身边有人是这样,喜爱看书不喜爱看文档,没关系,只有能帮到你,我乐意,jvm 书籍奉上,这也是我再整顿思维导图的时候参考最多的书籍,内容包含:jvm 架构、参数、垃圾回收、内存调配、性能监控工具、Java 堆、Class 文件构造、Class 装载零碎、字节码执行、实战
具体内容展现
篇幅起因,就展现这一些吧,这些材料曾经筹备好了,须要这些材料的,关注公众号:Java 架构师联盟,回复书籍获取精美材料后,增加私人小助手获取