深入拆解 Java 虚拟机
Oracle 高级研究员手把手带你入门 JVM
郑雨迪  Oracle 高级研究员,计算机博士
飙升榜 第4名
专栏
已完结·共 40 讲
|
8.7w 人已学
|
收藏
前者的优势在于无需等待编译,而后者的优势在于实际运行速度更快。HotSpot 默认采用混合模式,综合了解释执行和即时编译两者的优点。它会先解释执行字节码,而后将其中反复执行的热点代码,以方法为单位进行即时编译。
来自:01 | Java代码是怎么运行的?
23 人划过
Java 虚拟机识别方法的关键在于类名、方法名以及方法描述符(method descriptor)。前面两个就不做过多的解释了。至于方法描述符,它是由方法的参数类型以及返回类型所构成。在同一个类中,如果同时出现多个名字相同且描述符也相同的方法,那么 Java 虚拟机会在类的验证阶段报错。
来自:04 | JVM是如何执行方法调用的?(上)
23 人划过
异常实例的构造十分昂贵。这是由于在构造异常实例时,Java 虚拟机便需要生成该异常的栈轨迹(stack trace)。该操作会逐一访问当前线程的 Java 栈帧,并且记录下各种调试信息,包括栈帧所指向方法的名字,方法所在的类名、文件名,以及在代码中的第几行触发该异常。
来自:06 | JVM是如何处理异常的?
15 人划过
这些类型在栈上将占用 4 个字节;而在 64 位的 HotSpot 中,他们将占 8 个字节
来自:02 | Java的基本类型
14 人划过
invokedynamic。该指令的调用机制抽象出调用点这一个概念,并允许应用程序将调用点链接至任意符合条件的方法上。
来自:08 | JVM是怎么实现invokedynamic的?(上)
11 人划过
动态实现和本地实现相比,其运行效率要快上 20 倍 [2] 。这是因为动态实现无需经过 Java 到 C++ 再到 Java 的切换,但由于生成字节码十分耗时,仅调用一次的话,反而是本地实现要快上 3 到 4 倍 [3]。
来自:07 | JVM是如何实现反射的?
9 人划过
从而造成误报(将引用设置为 null)或者漏报(将引用设置为未被访问过的对象)
来自:11 | 垃圾回收(上)
9 人划过
在编译过程中遇到方法调用时,将目标方法的方法体纳入编译范围之中,并取代原方法调用的优化手段
来自:20 | 方法内联(上)
4 人划过
这么做主要是为了兼容引入泛型之前的代码
来自:15 | Java语法糖与Java编译器
4 人划过
@Retention则用来限定当前注解生命周期
来自:27 | 注解处理器
3 人划过
*精彩内容为该课程各文章中划线次数最多的内容
免费试读
讲师

郑雨迪

Oracle 高级研究员,计算机博士

郑雨迪,Oracle Labs 高级研究员,GraalVM 编译器组核心开发者之一。研究方向包括动态编译及程序分析。在加入 Oracle Labs 前,郑雨迪于瑞士卢加诺大学攻读并获得计算机博士学位。 郑雨迪在 Java 虚拟机性能优化方向有多年研究经验,在攻读博士学位期间,郑雨迪致...查看更多
编辑推荐
包含这门课的学习路径

Java工程师

29门课程 153.4w人学习
看过的人还看了
Java 核心技术面试精讲
杨晓峰
前 Oracle 首席工程师

44讲 | 125271 人已学习

¥59¥129
左耳听风
陈皓
网名“左耳朵耗子”,资深技术专家

119讲 | 178353 人已学习

¥98¥399
Netty 源码剖析与实战
傅健
Netty 源码贡献者、Cisco 高级软件工程师

60讲 | 32755 人已学习

¥59¥129
深入拆解 Tomcat & Jetty
李号双
eBay 技术主管

45讲 | 38676 人已学习

¥68¥199
从 0 开始学架构
李运华
网名“华仔”,前阿里资深技术专家(P9)

66讲 | 150851 人已学习

¥68¥199
如何设计一个秒杀系统
许令波
前阿里巴巴高级技术专家

10讲 | 56045 人已学习

¥39