第一次认真看 GC 日志:我关注了哪些字段
这篇我想按“排查记录”来写,主题是 第一次认真看 GC 日志:我关注了哪些字段。这种写法比纯概念文更适合我自己回看。 现象先别急着解释把 GC 日志当作现象记录,而不是一串看不懂的参数。 先把现象钉住,比急着下结论有用。很多时候真正的关键不是“答案是什么”,而是“我是怎么一步步排到这里的”。 我会先看哪几件事 先看收集器和堆大小 再看暂停时间和回收前后容量 最后结合接口耗时判断影响 带入一个排查场景给测试服务加上 GC 日志参数...
从一段代码重新认识 JVM 内存区域
这篇按踩坑笔记来写,因为 从一段代码重新认识 JVM 内存区域 我现在更容易记住“错在哪”,而不是“定义长什么样”。 先记住这句话用方法调用、对象创建和线程执行串起运行时数据区。 很多问题不是不会用,而是用得太顺手了,顺手到把边界条件给省掉了。 这类问题一般怎么出现我脑子里会先放这个场景:把一次 Controller 调用画成对象、栈帧和线程的关系图。 一开始看着都像是个小问题,真正麻烦的是它往往不是立刻报错,而是跑一阵子、数据一...
Java 对象、引用和值传递到底怎么理解
今天不想写长文,先把 Java 对象、引用和值传递到底怎么理解 这块拆成几条短一点的问答。面试里经常会被连续追问,如果只背一句定义,第二问基本就卡住了。 先说我自己的结论区分变量里保存的是值还是对象引用,避免把参数传递讲混。 我现在会先把这类题分成“定义是什么、为什么这样设计、代码里怎么用、容易翻车在哪”四层去答。这样比死背一段话稳很多。 快问快答 基本类型传递的是值副本。我现在的理解:先记结论,再回到代码里找一个能验证它的场景。...
为什么我要重新认真写技术博客
今天不想写长文,先把 为什么我要重新认真写技术博客 这块拆成几条短一点的问答。面试里经常会被连续追问,如果只背一句定义,第二问基本就卡住了。 先说我自己的结论把博客当成学习闭环,而不是把零散笔记搬到网上。 我现在会先把这类题分成“定义是什么、为什么这样设计、代码里怎么用、容易翻车在哪”四层去答。这样比死背一段话稳很多。 快问快答 先写清楚问题来源。我现在的理解:先记结论,再回到代码里找一个能验证它的场景。 记录判断过程。我现在的理...