前段时间,帮一个小老弟分割了一下字节的老同学,内推了一波,在一面的时候,体现相当不错,毕竟这玩意咱内推也怕推的人过来了不能满足需要打脸不是,可是在二面的时候出了问题,问这小子也不说,没方法,只能去分割一下老同学了
这不,花费一波吧老同学约进去吃顿饭,他通知我其实小老弟并不是个例,他倒没感觉有什么,不过他揭示了我让我通知小老弟当前面试的几个点,在这里我也分享给大家:
- 当面试官向你发问JVM的实战问题时,你是否感觉到莫衷一是?
- 想解决生产环境中的GC问题,你是否感觉到狗咬刺猬,无处下嘴?
- 面对JVM的海量参数,你是否感觉到迷茫无助?
- 看过很多的JVM文章,但当遇到了生产环境中实在问题的时候,你是否仍然不晓得如何进行剖析排查?
如果是这样,我感觉咱们大家先想分明在金九银十这个时间段“本人想要什么”最为重要
过后跟敌人聊了半天,其实最重要的还是“实战”! 先来点高级的材料
帮忙大家回顾一下基础知识吧,是什么玩意引起的咱们须要进行jvm调优?
1.什么是垃圾
C语言申请内存:malloc freeC++: 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架构师联盟,回复书籍获取精美材料后,增加私人小助手获取