JAVA虚拟机
bbhaizili
这个作者很懒,什么都没留下…
展开
-
虚拟机黑科技
Graal 是一个用 Java 写就的、并能够将 Java 字节码转换成二进制码的即时编译器。 它通过 JVMCI 与 Java 虚拟机交互,响应由后者发出的编译请求、完成编译并部署编译结果。 对 Java 程序而言,Graal 编译结果的性能略优于 OpenJDK 中的 C2;对 Scala 程序而言,它的性能优势可达到 10%(企业版甚至可以达到 20%!)。这背后离不开 Graal 所采用的激进优化方式。 Graal 编译器将编译过程分为前端和后端两大部分。 前端用于实现平台无关的优化(如方法原创 2020-08-20 10:18:03 · 216 阅读 · 0 评论 -
代码优化
字段访问相关优化 即时编译器关于字段访问的优化方式,以及死代码消除。 即时编译器将沿着控制流缓存字段存储、读取的值,并在接下来的字段读取操作时直接使用该缓存值。这要求生成缓存值的访问以及使用缓存值的读取之间没有方法调用、内存屏障,或者其他可能存储该字段的节点。 即时编译器还会优化冗余的字段存储操作。如果一个字段的两次存储之间没有对该字段的读取操作、方法调用以及内存屏障,那么即时编译器可以将第一个冗余的存储操作给消除掉。 死代码消除的两种形式。 第一种是局部变量的死存储消除以及部分死存储消除。它们可原创 2020-08-19 19:42:25 · 261 阅读 · 0 评论 -
JAVA虚拟机的基本原理
Java 代码为何在虚拟机中运行,以及如何在虚拟机中运行。 之所以要在虚拟机中运行,是因为它提供了可移植性。一旦 Java 代码被编译为 Java 字节码,便可以在不同平台上的 Java 虚拟机实现上运行。此外,虚拟机还提供了一个代码托管的环境,代替我们处理部分冗长而且容易出错的事务,例如内存管理。 Java 虚拟机将运行时内存区域划分为五个部分,分别为方法区、堆、PC 寄存器、Java 方法栈和本地方法栈。 Java 程序编译而成的 class 文件,需要先加载至方法区中,方能在 Java 虚拟机中原创 2020-08-17 17:27:48 · 713 阅读 · 0 评论