2025年8月7日

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

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

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

2025年8月6日

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

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

posted @ 2025-08-06 09:51 poemyang 阅读(533) 评论(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 阅读(729) 评论(0) 推荐(0)

2025年8月4日

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

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

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

2025年8月1日

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

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

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

2025年7月31日

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

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

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

2025年7月30日

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

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

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

2025年7月29日

为什么i++不是原子操作?一个让无数并发程序崩溃的“常识”

摘要: 原子性:不可分割的操作 private int count = 0; public void test() { List<Thread> ts = new ArrayList<>(); for (int i = 0; i < 100; i++) { Thread t = new Thread(() 阅读全文

posted @ 2025-07-29 16:01 poemyang 阅读(1251) 评论(0) 推荐(0)

2025年7月28日

我的代码出现幻觉?说好的a = 1; x = b,怎么成了x = b; a = 1?

摘要: 有序性:代码执行的幻觉 前面讲到通过缓存一致性协议,来保障共享变量的可见性。那么是否还有其他情况,导致对共享变量操作不符合预期结果。可以看下面的代码: private int a, b; private int x, y; public void test() { Thread t1 = new T 阅读全文

posted @ 2025-07-28 15:14 poemyang 阅读(695) 评论(0) 推荐(0)

2025年7月25日

我的代码背叛了我?为什么 a=1, b=2,最后x和y都等于0?

摘要: 随着多核架构的普及,并发编程已成为开发者不可或缺的核心技能。在学习过程中,开发者常会遇到这样的困惑:正确编写的单线程代码,为何在并发环境下可能瞬间失效?看似有序的语句执行后,为何结果却混乱不堪?这些问题,都指向了编程领域的一个关键课题——内存模型。 本文以Java语言为例,剖析共享数据在并发环境中的 阅读全文

posted @ 2025-07-25 15:08 poemyang 阅读(858) 评论(0) 推荐(0)

导航