面试八股文
文章平均质量分 87
各类面试题
qian_qh
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java类加载机制深度解析
.class文件 → 加载(Loading) → 链接(Linking) → 初始化(Initialization) → 使用(Using) → 卸载(Unloading)原创 2025-04-06 16:39:43 · 1843 阅读 · 0 评论 -
JVM 有哪些垃圾回收器
将可用内存按容量划分为两个区域,每次只使用其中的一块。当这一块的内存用完了,就将还存活着的对象复制到另外一块上面, 然后再把已使用过的内存空间一次清理掉。算法分为“标记” 和“清除”两个阶段:首先标记出所有需要回收的对象,在标记完成后统一回收掉所有被标记 的对象。标记阶段和标记清除算法一样,也是先标记出所需要回收的对象,然后让所有存活的对象移动到另一端,然后直接清理掉边界以外的内存。把Java堆分为新生代和老年代, 这样就可以根据各个年代的特点采用最适当的收集算法。原创 2025-04-04 21:59:14 · 1880 阅读 · 0 评论 -
新生代如果只有一个Eden+一个Survivor可以吗?
JVM设计两个Survivor是为了高效实现复制算法,避免内存碎片并精确管理对象生命周期。单Survivor方案会导致性能下降和GC行为不稳定,在HotSpot JVM的垃圾回收(GC)设计中,新生代(Young Generation)通常采用。现代GC(如G1、ZGC)不再严格区分Eden/Survivor,而是采用。早期JVM或某些嵌入式场景可能采用单Survivor,但需配合。来尝试单Survivor,但会触发警告或性能问题。调整Eden/Survivor比例,甚至设置。,但底层仍遵循类似逻辑。原创 2025-04-02 13:30:00 · 537 阅读 · 0 评论 -
Java堆内存分代机制详解:为什么JVM要分代管理内存?
在JVM中,堆(Heap)是Java对象存储的主要区域,而现代JVM(如HotSpot)普遍采用**分代收集(Generational Collection)**策略,将堆划分为不同的区域,以适应不同对象的生命周期特点。177页jvm全面解析。原创 2025-04-02 09:00:00 · 1085 阅读 · 0 评论 -
什么是Stop The World
就像打扫房间时,如果家人同时乱扔垃圾,你永远打扫不干净。STW相当于让所有人暂停活动,等你打扫完再继续。是JVM在执行垃圾回收(GC)时的一种行为,原创 2025-04-04 18:28:40 · 673 阅读 · 0 评论 -
什么是编译和反编译
反编译**这两个术语。它们分别代表代码从高级语言到机器码的转换,以及从机器码或字节码逆向还原成可读代码的过程。理解这两个概念,有助于我们更好地掌握程序的运行机制,并在逆向分析、安全审计、调试优化等方面发挥作用。掌握这两者,能让我们更深入地理解程序的运行机制,并在开发、调试、安全等领域发挥作用。这说明Java字节码的反编译效果非常好。机器可执行的代码(如二进制文件、字节码)**的过程。编译是指将**高级编程语言(如Java、C++)在软件开发过程中,我们经常听到**“编译”让计算机理解我们的代码,原创 2025-03-31 23:20:57 · 2351 阅读 · 0 评论 -
Java是编译型还是解释型
这个问题看似简单,但实际上涉及Java的底层执行机制。本文将从Java代码的编写到最终执行的完整流程出发,带你深入理解Java的独特运行方式。这种混合模式让Java兼具跨平台性和高性能,这也是它长期占据企业级开发主流地位的原因之一。在编程语言的学习过程中,我们经常会听到“编译型语言”和“解释型语言”这两个概念。,而是JVM能理解的中间代码,类似于汇编语言,但比机器码更抽象。除了传统的JIT编译,Java还支持。在讨论Java之前,我们先明确。Java的设计目标是“时,Java编译器(,其内容类似(可通过。原创 2025-03-30 16:51:06 · 1026 阅读 · 0 评论 -
Java中的对象一定在堆上分配内存吗
对象未逃逸出方法,且生命周期与方法调用一致。:直接使用局部变量代替对象,避免分配完整对象。中分配,方法结束后自动销毁,无需GC介入。:对象未逃逸,且可拆解为基本类型(如。除了堆和栈,Java对象还可能分配在。开始,JVM引入了一项关键技术——:对象未逃逸,且同步代码块无竞争。:减少堆内存占用,降低GC压力。:需谨慎使用,容易导致内存泄漏。:移除不必要的同步锁(如。原创 2025-04-01 13:45:00 · 1141 阅读 · 0 评论 -
深入浅出:JIT优化技术如何让Java运行更快
JIT通过动态编译和多种优化技术(如内联、逃逸分析、循环展开等),让Java在保留跨平台优势的同时,逼近原生语言的性能。JIT(Just-In-Time Compilation,即时编译)是Java虚拟机(JVM)的核心优化技术之一。Java程序默认是解释执行的,即JVM逐条读取字节码并解释成机器指令运行。,并将其编译成优化后的机器码,后续执行时直接运行机器码,避免解释开销。:将短小的方法调用直接替换为方法体,减少方法栈帧的创建和销毁开销。:减少循环控制语句的开销,将循环体复制多次。原创 2025-03-31 10:00:00 · 1200 阅读 · 0 评论 -
JVM的运行时内存区域是怎样的
Java虚拟机(JVM)在运行Java程序时,会将内存划分为不同的区域,每个区域负责不同的任务。了解这些内存区域对于优化程序性能、排查内存泄漏(如OOM错误)至关重要。原创 2025-04-01 08:00:00 · 1026 阅读 · 0 评论 -
Java如何实现平台无关性
Write Once, Run Anywhere”(一次编写,到处运行)是Java最著名的口号之一,也是它能够风靡全球的重要原因。但Java究竟是如何实现这种跨平台能力的呢?本文将深入剖析Java平台无关性的实现原理,帮助开发者更好地理解Java虚拟机(JVM)的工作机制。原创 2025-03-30 16:36:39 · 1238 阅读 · 0 评论
分享