28、基准测试框架JMH(上)今天我们来聊聊性能基准测试(benchmarking)。 大家或许都看到过一些不严谨的性能测试,以及基于这些测试结果得出的令人匪夷所思的结论。 1234567static int foo() { int i = 0; while (i ...2026-03-01深入拆解Java虚拟机
27、注解处理器注解(annotation)是Java 5引入的,用来为类、方法、字段、参数等Java结构提供额外信息的机制。我先举个例子,比如,Java核心类库中的@Override注解是被用来声明某个实例方法重写了父类的同名同参数类型的方法。 123456pac...2026-03-01深入拆解Java虚拟机
26、向量化在上一篇的实践环节中,我给你留了一个题目:如何进一步优化下面这段代码。 123456789void foo(byte[] dst, byte[] src) { for (int i = 0; i < dst.length - 4; ...2026-03-01深入拆解Java虚拟机
25、循环优化在许多应用程序中,循环都扮演着非常重要的角色。为了提升循环的运行效率,研发编译器的工程师提出了不少面向循环的编译优化方式,如循环无关代码外提,循环展开等。 今天,我们便来了解一下,Java虚拟机中的即时编译器都应用了哪些面向循环的编译优化。 循环无关...2026-03-01深入拆解Java虚拟机
24、字段访问相关优化在上一篇文章中,我介绍了逃逸分析,也介绍了基于逃逸分析的优化方式锁消除、栈上分配以及标量替换等内容。 其中的标量替换,可以看成将对象本身拆散为一个个字段,并把原本对对象字段的访问,替换为对一个个局部变量的访问。 123456789class Foo ...2026-03-01深入拆解Java虚拟机
23、逃逸分析我们知道,Java中Iterable对象的foreach循环遍历是一个语法糖,Java编译器会将该语法糖编译为调用Iterable对象的iterator方法,并用所返回的Iterator对象的hasNext以及next方法,来完成遍历。 12345p...2026-03-01深入拆解Java虚拟机