熟悉JVM架构与GC垃圾回收机制,以及相应的参数调优,有过在Linux上进行系统优化的经验
前提复习
JVMGC快速回顾复习串讲
类装载器子系统
线程私有
线程公有
复制算法在年轻代使用(幸存者0区)
既不浪费空间,又不产生碎片,但是耗时较多。
JVM垃圾回收的时候如何确定垃圾?是否知道什么是GC Roots?
谈谈你对GCRoots的理解
对象可达、对象不可达
引用可达对象不能被回收、引用不可达对象可以被回收
引用 实例对象
你说你做过JVM调优和参数配置,请问如何盘点查看JVM系统默认值?
JVM的配置参数和X参数
标配参数、X参数、XX参数
1~JDK12都在
解释执行
编译
混合模式:先编译后执行
JVM的XX参数之布尔类型
如何查看一个正在运行中的java程序,它的某个JVM参数是否开启?具体值是多少?
使用jps和jinfo两个命令。
减号,表示根本没有添加这个参数
加号表示开启
JVM的XX参数之设值类型
最大堆内存、最大垃圾回收时间
元空间的初始值
JVM的XX参数之XmsXmx坑题
初始堆内存
最大堆内存
都是属于XX参数
JVM盘点家底查看初始默认值
没有冒号的就是没有被改过的初始值
加上冒号的就是用户改过的更新值
JVM盘点家底查看修改变更值
你平时工作用过的JVM常用配置参数有哪些?
堆内存初始大小快速复习
获取初始堆内存大小和最大的内存大小
常用基础参数栈内存Xss讲解
单个线程栈的大小是0
如果0那么就代表初始值
运行时的栈空间
栈管运行、堆管存储
常用基础参数元空间MetaspaceSize讲解
本地物理内存是16G,但是这里元空间只默认取了21M
常用基础参数PrintGCDetails讲解
常用基础参数SurvivorRatio讲解
默认就是8
常用基础参数NewRatio讲解
默认是2
可以设置老年代和新生代的比率
常用基础参数MaxTenuring Threshold讲解
最大 吞吐量
默认是15
强引用、软引用、弱引用、虚引用分别是什么?
引用 栈里面
实例对象 堆里面
强引用Reference
强引用不会被垃圾回收
软引用SoftReference
内存够的时候不收,内存不够的时候才收
因为要模拟自动GC,所以这里我们把手动GC去掉
弱引用WeakReference
不管够不够用,都去回收
软引用和弱引用的适用场景
现在有一个缓存系统,去读取图片
加载到内存中;
不加载到内存中
WeakHashMap案例演示和解析
HashMap
弱的,只要一GC就会被回收
虚引用简介
幽灵引用
ReferenceQueue引用队列介绍
会把弱引用的对象放到引用队列中去
虚引用PhantomReference
GC之前没有放到这个队列中,GC之后会放到这个队列中去
GCRoots和四大引用小总结
请谈谈你对OOM的认识
SOFE之StackOverflowError
它是异常还是错误?
error exception
error
这是错误!error!
OOM之Java heap space
这是error
这是错误!
栈内存 深度的方法调用导致出不来,栈被占满了
堆内存 对象太大太多了
OOM之GC overhead limit exceeded
超过了最大的极限
OOM之Direct buffer memory
Netty技术
16GJVM能够使用的物理内存是4G,不属于GC管,不需要拷贝
JVM堆内存,GC,需要拷贝
直接内存错误
OOM之unable to create new native thread
不能够创建新的线程了
OOM之unable to create new native thread
OOM之Metaspace
元空间
方法区
放一些类的模板
20多M
6.GC垃圾回收算法和垃圾收集器的关系?分别是什么请你谈谈。
垃圾收集器回收种类
串行
并行
并发标记
G1
串行并发并行G1四大垃圾回收方式
串行
并行
并发
garbge first
7.怎么查看服务器默认的垃圾收集器是哪个?生产上如何配置垃圾收集器的?谈谈你对垃圾收集器的理解?
如何产看默认的垃圾收集器
默认的是:并行回收
JVM默认的垃圾收集器有哪些
GC之7大垃圾收集器概述
G1都覆盖了young区、old区
GC之约定参数说明
默认新生代的垃圾收集器
老年代
并行新生代
并发新生代
并行老年代
GC之Serial收集器
结果:新生代和老年代都使用默认的垃圾收集器,即串行垃圾收集器
GC之Parallel收集器
新生代并行、老年代串行
不推荐使用并行新生代和串行老年代!!
GC之ParallelOld收集器
java8的默认垃圾收集器是:新生代并行回收!
并行新生代
并行老年代
默认就是并行!
GC之CMS收集器
标记清除:节约空间、有内存碎片
老年代CMS
新生代并行
1,3停 2,4不用停
GC之SerialOld收集器
GC之如何选择垃圾收集器
8.G1垃圾收集器
GC之G1收集器
GC之G1底层原理
GC之G1参数配置及和CMS的比较
生产环境服务器变慢,诊断思路和性能评估谈谈?
JVMGC结合SpringBoot微服务优化简介
Linux命令之top
系统的平均负载值
Linux命令之cpu查看vmstat
Linux命令之cpu查看pidstat
Linux命令之内存查看free和pidstat
Linux命令之硬盘查看df
Linux命令之磁盘IO查看iostst和pidstat
Linux命令之网络IO查看ifstat
假如生产环境出现CPU占用过高,请谈谈你的分析思路和定位
CPU占用过高的定位分析思路
对于JDK自带的JVM监控和性能分析工具用过哪些?一般你是怎么用的?
GitHub操作之开启
GitHub操作之常用词
GitHub操作之in搜索
GitHub操作之star和fork范围搜索
GitHub操作之awesome搜索
GitHub操作之#L数字
GitHub操作之T搜索
GitHub操作之搜索区域活跃用户