2025年8月12日

从纳秒到毫秒的“时空之旅”:CPU是如何看待内存与硬盘的?

摘要: 在数据暴涨时代,如何高效存储和管理海量数据已成为应用系统的核心挑战。这不仅关乎读写性能,更涉及并发场景下性能与持久化之间的平衡。要应对这一挑战,既需要理解不同存储介质的物理特性与性能边界,也需通过数据结构、存储模型与操作系统机制的协同设计,达成技术上的最优平衡。 本文将从计算机系统的分层存储体系这一 阅读全文

posted @ 2025-08-12 08:19 poemyang 阅读(609) 评论(0) 推荐(2)

2025年8月11日

性能优化之母:为什么说“方法内联”是编译器优化中最关键的一步棋?

摘要: 方法内联 方法内联(Method Inlining)是编译器在进行优化时,将被调用方法的代码直接嵌入到调用点,以替代方法调用指令的过程。它不仅消除了方法调用的开销,还为后续的优化(如常量传播、死代码消除等)创造了条件。 Java程序的方法调用会涉及到如下步骤: 1)保存当前方法的程序计数器(返回地址 阅读全文

posted @ 2025-08-11 08:52 poemyang 阅读(453) 评论(0) 推荐(2)

2025年8月8日

new出来的对象,不一定在堆上?聊聊Java虚拟机的优化技术:逃逸分析

摘要: 逃逸分析(Escape Analysis)是一种静态程序分析技术,主要用于判定对象的可见范围(Visibility)与生命周期(Lifetime)。该技术是现代即时编译器实现局部化优化、提升内存使用效率、降低同步成本的基础。 通俗来说,逃逸分析的核心在于回答这样一个问题:某个对象是否可能“逃逸”出它 阅读全文

posted @ 2025-08-08 08:04 poemyang 阅读(302) 评论(0) 推荐(1)

2025年8月7日

解锁硬件潜能:Java向量化计算,性能飙升W倍!

摘要: 机器相关的编译优化 与机器相关的编译优化常见的有指令选择(Instruction Selection)、寄存器分配(Register Allocation)、窥孔优化(Peephole Optimization)等。这些机器级优化通常发生在中间表示向目标代码生成之间的后端编译阶段。 与源代码层面的优 阅读全文

posted @ 2025-08-07 10:03 poemyang 阅读(650) 评论(1) 推荐(1)

2025年8月6日

Java编译器优化秘籍:字节码背后的IR魔法与常见技巧

摘要: 中间表达形式 编译器通常被划分为前端编译器和后端编译器两个部分。前端编译器负责对源代码进行词法分析、语法分析和语义分析,生成中间表达形式(Intermediate Representation ,IR)。这种由前端生成的IR被称为高级中间表达形式(High Intermediate Represen 阅读全文

posted @ 2025-08-06 09:51 poemyang 阅读(548) 评论(0) 推荐(1)

2025年8月5日

“代码跑着跑着,就变快了?”——揭秘Java性能幕后引擎:即时编译器

摘要: HotSpot虚拟机内部集成了两个即时编译器,分别被称为C1编译器(Client Compiler/ Quick Complier)和C2编译器(Server Compiler)。自Java 9起,-server模式(即启用C2编译器或分层编译)是默认选项,-client选项通常会被忽略。 C1编译 阅读全文

posted @ 2025-08-05 08:35 poemyang 阅读(741) 评论(0) 推荐(0)

2025年8月4日

“同声传译”还是“全文翻译”?为何HotSpot虚拟机仍要保留解释器?

摘要: Java虚拟机采用的是基于栈的指令集架构,这意味着Java虚拟机主要通过解释执行基于栈的字节码来运行Java程序。尽管Java虚拟机采取了一些优化措施,如栈顶缓存(Stack Top Cache),将栈顶元素缓存到寄存器中以减少对内存的频繁访问,但这些优化手段并不能从根本上解决基于栈的指令集执行效率 阅读全文

posted @ 2025-08-04 09:47 poemyang 阅读(601) 评论(0) 推荐(1)

2025年8月1日

a+b=c,处理器一步搞定,Java虚拟机为啥要四步?

摘要: 基于栈的运行方式 Java虚拟机的执行过程基于字节码指令,可以将其视为对操作系统的一种抽象模拟。Java虚拟机具有自己的指令集和运行环境,包括堆(Heap)、栈(Stack)、方法区(Method Area)等。因此,Java虚拟机的指令操作流程与处理器的指令操作流程有许多相似之处,主要包括取指令、 阅读全文

posted @ 2025-08-01 10:46 poemyang 阅读(758) 评论(0) 推荐(1)

2025年7月31日

Hello World背后藏着什么秘密?一行代码看懂Java的“跨平台”魔法

摘要: Java虚拟机(Java Virtual Machine,JVM)是Java生态的基石,不仅承载着“一次编写,随处运行”的核心使命,还通过即时编译优化机制,弥合抽象层与性能间的差距。字节码的通用性虽带来效率损耗,但Java虚拟机借助动态探测热点代码、分层编译策略和即时优化技术,不断弥补抽象造成的性能 阅读全文

posted @ 2025-07-31 10:47 poemyang 阅读(1020) 评论(1) 推荐(1)

2025年7月30日

没有Happens-Before?你的多线程代码就是‘一锅粥’!

摘要: 内存模型与happens-before:开发者与硬件的和平条约 在前文中,提到处理器通过一些特殊指令(如 LOCK、CMPXCHG、内存屏障等)来保障多线程环境下程序的正确性。然而,这种做法仍然存在几个显著问题。 1)底层指令实现复杂且晦涩:处理器指令的细节往往难以理解,开发者需要付出大量的时间和精 阅读全文

posted @ 2025-07-30 14:46 poemyang 阅读(603) 评论(0) 推荐(0)

导航