


熟悉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操作之搜索区域活跃用户



- 点赞 4
- 收藏
- 分享
JVM与GC核心概念
2379





