`

《深入理解Java虚拟机》笔记之第10章 早期(编译期)优化

阅读更多

1、编译期

       定义:把*.java文件转换成*.class文件的过程。

       虚拟机设计团队把对性能的优化集中到了后端的即时编译器中,这样可以让那些不是由Javac产生的Class文件(如JRubyGroovy等语言的Class文件)也同样能享受到编译器优化所带来的好处。

        可以说,Java中即时编译器在运行期的优化过程对于程序运行来说更重要,而前端编译器在编译期的优化过程对于程序编译来说关系更加密切(如编译器的“语法糖”)。

 

2、常量折叠 P265

       形如int a = 1 + 2;

       在编译期间进行了常量折叠,所以在代码里面直接定义“a=1+2”比起直接定义“a = 3”,并不会增加程序运行期哪怕仅仅一个CPU指令的运算量。

 

3、一个方法的参数和局部变量定义是否使用final修饰符,对运行期是没有影响的(二者的Class文件一模一样),变量的不变性仅仅由编译器在编译期间保证。P267

 

4、字节码生成:

字节码生成是Javac编译过程的最后一个阶段,实例构造器<init>()方法和类构造器<clinit>()方法就是此阶段添加到语法树中的。期间编译器还会进行少量的代码添加和转换工作。

编译器会把语句块(对实例构造器而言是“{}”块,对于类构造器而言是“static{}”块、变量初始化(实例变量和类变量)、调用父类的实例构造器(仅仅是实例构造器, <clinit>()方法中无须调用父类的<clinit>()方法,虚拟机自动保证父类构造器的执行)等操作收敛到  <init>()<clinit>()方法之中,并且保证一定是按先执行父类的实例构造器,然后初始化变量,最后执行语句块的顺序进行。

此外,还有一些优化的逻辑,如把字符串的加操作替换为StringBufferStringBuilder(取决于目标代码的版本是否大于或等于JDK1.5)的append()操作。

 

5、语法糖

      1)泛型

        重载的方法具有不同的特征签名,而特征签名并不包括返回值。但Class文件格式中,只要描述符不是完全一致的两上方法就可以共存,即两个方法如果有相同的名称和特征签名,但返回值不同,那它们也可以合法地共存于一个Class文件之中。P271

分享到:
评论

相关推荐

    深入Java虚拟机(原书第2版).pdf【附光盘内容】

     作者以易于理解的方式深入揭示了java虚拟机的内部工作原理,深入理解这些内容,将对读者更快速地编写更高效的程序大有裨益!  本书共分20章,第1-4章解释了java虚拟机的体系结构,包括java栈、堆、方法区、执行...

    学习深入理解Java虚拟机的前几章笔记

    ### 学习深入理解Java虚拟机的前几章笔记 #### JVM内存模型 Java虚拟机(JVM)的内存模型主要分为两大类:线程共享区和线程私有区。 ##### 线程共享区 - **堆**:是所有线程共享的内存区域,在这里存放着对象实例...

    深入理解Java虚拟机JVM高级特性与最佳实践1

    《深入理解Java虚拟机JVM高级特性与最佳实践》是一本专注于Java开发人员提升技术水平的著作,由周志明撰写。这本书旨在填补Java技术体系中关于Java虚拟机(JVM)知识的空白,帮助读者深入理解JVM的工作原理及其对...

    深入理解Java虚拟机读书笔记之:第3章 安全(3)

    《深入理解Java虚拟机》是Java开发者必读的经典之作,其中第三章主要探讨了Java安全方面的内容。在Java中,安全是一个至关重要的概念,因为Java的设计目标之一就是提供一种可以在不同环境中安全运行的代码机制。本章...

    深入JAVA虚拟机 不那么完美的第二版.pdf.zip

    《深入JAVA虚拟机 不那么完美的第二版》这本书虽然在印刷上可能存在一些小瑕疵,但这并不影响我们从中汲取宝贵的Java虚拟机(JVM)知识。Java虚拟机是Java平台的核心组成部分,它负责执行Java程序,提供了跨平台的...

    深入理解Java虚拟机学习笔记借鉴.pdf

    Java 虚拟机(JVM)自动内存管理机制 Java 虚拟机(JVM)自动内存管理机制是 Java 语言的一大特色,它使得 Java 程序员无需手动管理内存,从而提高了开发效率和程序稳定性。JVM 自动内存管理机制主要通过 JVM 的...

    深入java虚拟机 高清pdf 高清高清高清

    《深入Java虚拟机》这本书是Java开发者深入了解JVM(Java Virtual Machine)的必备经典之作。它详尽地探讨了Java虚拟机的工作原理、内存管理、类加载机制、字节码执行以及性能优化等多个核心主题,旨在帮助开发者...

    深入理解java虚拟机视频教程

    深入理解java虚拟机视频教程,jvm原理,java虚拟机,jvm性能调优,内存模型,gc工作原理,内存分配,类的加载等等视频教程

    诸葛 BAT面试之深入理解Java虚拟机 9

    诸葛_BAT面试之深入理解Java虚拟机_9

    深入理解Java虚拟机笔记(带目录).docx

    深入理解 Java 虚拟机笔记 Java 虚拟机(JVM)是 Java 语言的运行环境,它负责解释和执行 Java 字节码。下面是 Java 虚拟机相关的知识点: 虚拟机内存结构 Java 虚拟机的内存结构主要包括以下几个部分: * 方法...

    深入理解Java虚拟机(第二版)_java_

    《深入理解Java虚拟机(第二版)》是Java开发者必读的经典著作,它全面而深入地探讨了Java虚拟机(JVM)的工作原理和技术细节。这本书涵盖了从内存管理、类加载机制、字节码执行到垃圾收集算法等多个关键领域,为...

    深入理解Java虚拟机.xmind

    自己看《深入理解Java虚拟机》(第二版)所做的一些笔记。因为个人水平有限,能够理解的也只有前面几章的内容,后面的内容觉得看了也不是很理解,就没有记在里面。希望能对大家有所帮助,也希望能和大家一起进步。

    深入理解JAVA虚拟机.xmind

    深入理解JAVA虚拟机.xmind

    深入理解Java虚拟机.rar_JAVA虚拟机_java_深入理解JVM:pdf_深入理解Java_深入理解jvm

    了解jvm的pdf,高清pdf,希望大家下载

    深入JAVA虚拟机第二版 Bill Venners著 曹晓钢 蒋靖译

    通过学习《深入JAVA虚拟机第二版》,开发者可以提升对JVM的深入理解,从而更好地设计和优化Java程序,解决性能问题,提升应用程序的稳定性和效率。对于任何想要成为Java技术专家的人来说,这本书无疑是一本不可多得...

    深入理解 Java 虚拟机 - v1.0.pdf

    虚拟机是一种抽象化的计算机,通过在实际的计算机上仿真模拟各种...Java虚拟机屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。

    深入理解Java虚拟机(jvm性能调优+内存模型+虚拟机原理).zip

    《深入理解Java虚拟机》是一本深度探讨Java虚拟机(JVM)的著作,涵盖了JVM性能调优、内存模型以及虚拟机原理等多个关键领域。本文将基于这些主题,详细阐述其中的重要知识点。 首先,我们要了解Java虚拟机(JVM)...

    深入java虚拟机.pdf

    深入 Java 虚拟机.pdf Java 虚拟机(Java Virtual Machine,JVM)是 Java 语言的 runtime 环境,是 Java 程序执行的核心组件。它提供了一个平台无关的环境,允许 Java 程序在不同的操作系统和硬件平台上运行。 一...

    深入Java虚拟机——本地方法栈.pdf

    Java虚拟机(JVM)是Java程序运行的基础,它提供了执行环境和各种内存区域,以支持Java代码的高效运行。本地方法栈是JVM的一部分,它主要负责处理与本地方法(通常是由C或C++编写)相关的调用。本地方法栈在Java线程...

    深入JAVA虚拟机 随书源码 JVM规范

    深入理解JVM对于优化代码性能、排查问题以及提升编程能力至关重要。本篇文章将详细探讨JVM的工作原理、内存管理、类加载机制以及垃圾收集等方面的知识。 首先,我们来看《深入JAVA虚拟机》这本书,它涵盖了JVM的...

Global site tag (gtag.js) - Google Analytics