新闻详情

新闻详情

首页 / 资讯中心 / 详情

JUC高频面试八股总结个人开源

发布时间:2026/10/2 12:57:17来源:尧图网络
JUC高频面试八股总结个人开源
JVMJVM 物理内存区域的划分[图片]线程私有的有程序计数器记录着当前线程执行到了哪一行字节码指令。万一中途 CPU 切走了下次CPU回来照着地址就能无缝衔接。虚拟机栈每个方法执行都会创建一个栈帧存储方法参数、方法内局部变量如果递归太深就会发生“栈溢出StackOverflowError本地方法栈使Java通过本地方法调用操作系统底层功能。线程共享的有堆保存对象实例[图片]方法区保存类信息、静态变量、常量方法区使用本地内存受jvm内存限制-jkd1.8后被元空间取代本地内存降低了内存溢出的风险[图片][图片]垃圾回收垃圾没被引用的对象[图片]三种垃圾回收算法[图片]JVM 的垃圾回收算法有哪些新生代和老年代分别用什么标准回答主要有标记-清除、标记-整理、复制算法。新生代常用复制算法Minor GC老年代常用标记-整理Major/Full GC。我的理解/加分项新生代用复制算法是因为大部分对象都是“朝生夕灭”的复制存活对象的成本很低。老年代对象存活率高如果用复制算法会导致大量无效复制所以用标记-整理。现在的 G1 和 ZGC 则是把内存切分成 Region打破了物理上的新生代/老年代界限实现了更可控的停顿时间。分代回收年轻代老年代[图片][图片]垃圾回收器CMS 老年代高响应比优先采用了标记清除并发标记和并发清理阶段允许用户线程和垃圾回收线程同时工作,缺点是会产生内存碎片而且对 CPU 资源比较敏感。G1 全年代可设置每次垃圾回收STW的暂停时间精准计算在 200ms 内能清理哪些格子确保绝不超时把堆内存划分为若干个大小相同的区先回收垃圾多的,兼顾吞吐和停顿更适合大堆和需要可控停顿的场景。[图片]JVM调优[图片][图片][图片]类加载机制[图片][图片]类加载器的作用就是把编译好的 .class 字节码文件加载到 JVM 内存中。 在 JDK 8 及之前的版本中主要有三个核心的类加载器它们呈层级关系启动类加载器 它是最顶层的。负责加载 JDK 的核心类库即 JAVA_HOME/lib 目录下的类比如 String、System 等。注意点它是由 C 实现的所以我们在 Java 代码里拿不到它的引用会返回 null。扩展类加载器 它负责加载 JDK 的扩展库JAVA_HOME/lib/ext 目录。应用类加载器 这是我们平时接触最多的。它负责加载 Classpath 下的类也就是我们自己写的代码和引入的第三方 jar 包。”双亲委派模型双亲委派是一种类加载规则当一个类加载器收到类加载请求时它不会自己先去尝试加载而是将这个加载请求委派给父类加载器。避免类的重复加载保证核心API的安全为什么要这么设计核心优势绝对安全沙箱机制假设黑客自己写了一个 java.lang.String 类企图破坏系统。因为双亲委派机制这个请求会一路向上交给启动类加载器启动类加载器会直接加载 JDK 原生的 String黑客的自定义类永远无法被加载从而保护了 JVM 底层的安全。避免重复加载如果上级已经加载过这份图纸下级就不会再加载了保证了类的唯一性。追问1父加载器是子加载器的父类吗不是继承关系而是组合关系。 它们在代码层面并没有 extends 关系而是通过一个 parent 成员变量持有父加载器的引用。这是一种包含关系不是类继承双亲委派虽然安全但有时太死板了。在某些场景下必须“以下犯上”Tomcat 容器Tomcat 为了让不同的 Web 应用比如应用A和应用B可以使用不同版本的同名第三方包而不发生冲突它为每个应用创建了独立的自定义类加载器实现了类的隔离什么是 OOM怎么排查内存溢出OOMOut Of Memory是指内存耗尽。常见有堆溢出存放业务对象的堆内存、元空间溢出存放类信息的元空间、栈溢出方法无限递归调用等。我理解排查 OOM 的核心在于‘保留现场’和‘顺藤摸瓜’。生产环境绝对不能裸奔我会在启动参数里强制开启 -XX:HeapDumpOnOutOfMemoryError确保 OOM 发生时能自动保存内存快照。拿到快照后我不会盲目看而是用 MAT 工具重点排查两点一是通过 Dominator Tree 找出内存占用最大的嫌疑对象二是通过 GC Roots 引用链定位到是哪行代码或哪个缓存没有及时释放它。在实际业务中OOM 往往是因为集合类如 HashMap、List只进不出或者 ThreadLocal 用完没 remove 导致的内存泄漏。”[图片][图片][图片][图片]如何判断是不是垃圾[图片]
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

python3如何写布局背景颜色代码 2026/10/2 13:49:33

python3如何写布局背景颜色代码

如果我们想要让某个模块变得特别突出, 从而吸引大家的注意, 那么通常情况下, 我们会把那个模块的背景颜色改得亮一些。这样的情况操作, 更多地是出现在我们想要强调表格里面的某一项数据,或者是某一项名称的时候。想要在中设置布局背景颜色的话, 是需要通过代码来进行更改的。相…

阅读更多 →
CSP-J2、CSP-S2孩子爆零后如何恢复对编程的兴趣 2026/10/2 13:49:33

CSP-J2、CSP-S2孩子爆零后如何恢复对编程的兴趣

针对四年级信奥孩子爆零后抵触编程的情况,核心思路是先切断“写代码考砸了”的负面绑定,再用低门槛正向体验重建兴趣,全程控制任务量不占用校内时间,3天就能明显缓解抵触情绪。 🎮 第一步:先“去竞赛化”&…

阅读更多 →
SSM酒店预订系统毕业设计全解析:框架原理与实战避坑 2026/10/2 13:49:33

SSM酒店预订系统毕业设计全解析:框架原理与实战避坑

SSM酒店预订系统这个题目,我带了这么多届毕业设计,几乎每年都会遇到几个学生选它。说实话,这题目虽然老,但确实经典到值得认真聊一聊。它不像电商、社交那种大而全的系统,业务边界清晰,功能复杂度适中&…

阅读更多 →
CPU隔离之后还会有实时延迟吗?从IRQ、Timer、RCU到内核线程全面理解实时Linux干扰源 2026/10/2 13:49:32

CPU隔离之后还会有实时延迟吗?从IRQ、Timer、RCU到内核线程全面理解实时Linux干扰源

在前面的文章中,我们已经连续讨论了实时Linux中的几个关键问题:PREEMPT_RT解决内核抢占与实时化问题,SCHED_FIFO、SCHED_RR和SCHED_DEADLINE解决实时任务如何获得CPU的问题,优先级继承解决实时任务因为锁竞争而产生的优先级反转问…

阅读更多 →
【OpenClaw 源码分析】OpenClaw卸载Uninstall技术分析:从卸载入口到残留清理的完整链路 2026/10/2 13:49:32

【OpenClaw 源码分析】OpenClaw卸载Uninstall技术分析:从卸载入口到残留清理的完整链路

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
从 Cursor 的「Dynamic Context Discovery」谈起:AI Agent 真正的护城河,是上下文工程而不是 Prompt 2026/10/2 13:49:26

从 Cursor 的「Dynamic Context Discovery」谈起:AI Agent 真正的护城河,是上下文工程而不是 Prompt

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉