30、Java虚拟机的监控及诊断工具(命令行篇)

今天,我们来一起了解一下JDK中用于监控及诊断工具。本篇中我将使用刚刚发布的Java 11版本的工具进行示范。 jps你可能用过ps命令,打印所有正在运行的进程的相关信息。JDK中的jps命令(帮助文档)沿用了同样的概念:它将打印所有正在运行的Jav...

深入拆解Java虚拟机

31、Java虚拟机的监控及诊断工具(GUI篇)

今天我们来继续了解Java虚拟机的监控及诊断工具。 eclipse MAT在上一篇中,我介绍了jmap工具,它支持导出Java虚拟机堆的二进制快照。eclipse的MAT工具便是其中一个能够解析这类二进制快照的工具。 MAT本身也能够获取堆的二进制快...

深入拆解Java虚拟机

32、JNI的运行机制

我们经常会遇见Java语言较难表达,甚至是无法表达的应用场景。比如我们希望使用汇编语言(如X86_64的SIMD指令)来提升关键代码的性能;再比如,我们希望调用Java核心类库无法提供的,某个体系架构或者操作系统特有的功能。 在这种情况下,我们往往会...

深入拆解Java虚拟机

33、Java Agent与字节码注入

关于Java agent,大家可能都听过大名鼎鼎的premain方法。顾名思义,这个方法指的就是在main方法之前执行的方法。 1234567package org.example;public class MyAgent { publi...

深入拆解Java虚拟机

34、Graal:用Java编译Java

最后这三篇文章,我将介绍Oracle Labs的GraalVM项目。 GraalVM是一个高性能的、支持多种编程语言的执行环境。它既可以在传统的OpenJDK上运行,也可以通过AOT(Ahead-Of-Time)编译成可执行文件单独运行,甚至可以集成...

深入拆解Java虚拟机

35、Truffle:语言实现框架

今天我们来聊聊GraalVM中的语言实现框架Truffle。 我们知道,实现一门新编程语言的传统做法是实现一个编译器,也就是把用该语言编写的程序转换成可直接在硬件上运行的机器码。 通常来说,编译器分为前端和后端:前端负责词法分析、语法分析、类型检查和...

深入拆解Java虚拟机
14567