34、Graal:用Java编译Java最后这三篇文章,我将介绍Oracle Labs的GraalVM项目。 GraalVM是一个高性能的、支持多种编程语言的执行环境。它既可以在传统的OpenJDK上运行,也可以通过AOT(Ahead-Of-Time)编译成可执行文件单独运行,甚至可以集成...2026-03-01深入拆解Java虚拟机
33、Java Agent与字节码注入关于Java agent,大家可能都听过大名鼎鼎的premain方法。顾名思义,这个方法指的就是在main方法之前执行的方法。 1234567package org.example;public class MyAgent { publi...2026-03-01深入拆解Java虚拟机
32、JNI的运行机制我们经常会遇见Java语言较难表达,甚至是无法表达的应用场景。比如我们希望使用汇编语言(如X86_64的SIMD指令)来提升关键代码的性能;再比如,我们希望调用Java核心类库无法提供的,某个体系架构或者操作系统特有的功能。 在这种情况下,我们往往会...2026-03-01深入拆解Java虚拟机
31、Java虚拟机的监控及诊断工具(GUI篇)今天我们来继续了解Java虚拟机的监控及诊断工具。 eclipse MAT在上一篇中,我介绍了jmap工具,它支持导出Java虚拟机堆的二进制快照。eclipse的MAT工具便是其中一个能够解析这类二进制快照的工具。 MAT本身也能够获取堆的二进制快...2026-03-01深入拆解Java虚拟机
30、Java虚拟机的监控及诊断工具(命令行篇)今天,我们来一起了解一下JDK中用于监控及诊断工具。本篇中我将使用刚刚发布的Java 11版本的工具进行示范。 jps你可能用过ps命令,打印所有正在运行的进程的相关信息。JDK中的jps命令(帮助文档)沿用了同样的概念:它将打印所有正在运行的Jav...2026-03-01深入拆解Java虚拟机
29、基准测试框架JMH(下)今天我们来继续学习基准测试框架JMH。 @Fork和@BenchmarkMode在上一篇的末尾,我们已经运行过由JMH项目编译生成的jar包了。下面是它的输出结果: 123456789101112131415161718192021222324252...2026-03-01深入拆解Java虚拟机