`
zyslovely
  • 浏览: 231637 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

jvm 从.java到.class

 
阅读更多
1.分析和输入到符号表
将符号输入到符号表,通常包括确定类的超类型和接口、根据需要添加默认构造器、将类中出现的符号输入类自身的符号表中。
2.注解处理 annotation processing
该步骤主要用于处理用户自定义的annotation,可能带来的好处是基于annotation来生成附加的代码或进行一些特殊的检查,从而节省一些共用的代码的编写。
3语义分析和生成class文件
analyse步骤基于抽象语法树进行一系列的语义分析,包括将语法树中的名字、表达式等元素与变量、方法、类型等联系起来。检查变量使用前是否已声明;推导泛型方法的类型参数;检查类型匹配性,进行常量折叠,检查所有语句都可到达;检查所有checked exception都被捕获或抛出;检查变量确定性赋值



类加载机制是指.class文件加载到jvm,并形成class对象的机制,之后应用就可对class对象进行实例化并调用,类加载机制可再运行时动态加载外部的类、远程网络下载过来的class文件

jvm将类加载过程划分位三步:装载、链接和初始化。装载和链接过程完成后,即将二进制的字节码转换位class对象;初始化过程不是加载类时必须触发的,但最迟必须再初次主动使用对象前执行,其所作的动作为给静态变量赋值
1。装载
负责找到二进制字节码并加载到jvm。
2.链接
负责对二进制字节码的格式进行校验、初始化装载类中的静态变量及解析类中调用的接口、类。
3。初始化
执行类中的静态初始化代码、构造器代码及静态属性的初始化。

jvm 抛出的常见一场
1。.classnotfoundException 产生这个异常的原因再当前的classloader中加载类时未找到类文件
2. noclassdeffoundError 造成此异常的主要原因时加载的类中引用到的另外的类不存在
3. linkageError 此类已经再classloader加载过了,重复地加载会造成该异常。
4. classcastException 合理使用泛型可相对减少此异常的触发。两个A对象由不同的classloader加载的情况,这时如果将其中A对象造型成另外一个A对象,就会报。

类加载机制:
1.栈顶缓存:再方法的执行过程中,可以看到由很多操作要将值放入操作树栈,这导致了寄存器和内存要不断地交换数据,栈顶缓存将本来位于操作树栈顶的值直接缓存再寄存器中,这对于大部分只需要一个值的操作而言,无须将数据放入操作数栈,可直接再寄存器计算,然后放回操作数栈。
2.部分栈楨共享
当一个方法调用另外一个方法时,通常传入另一个方法的参数为已存放再操作数栈的数据。该优化就是当调用方法时,后一方法可将前一方法的操作数栈作为当前方法的拘捕变量,节省copy带来的消耗

编译执行:
1.方法内联:java通常要调用多个方法完成功能。执行时,要经理多次参数传递,返回值等,方法内联能够直接将调用到的方法的指令植入当前方法
2.去虚拟化:再装载class文件后,进行类层次分析。如发现类中的方法只提供一个实现类,那会进行方法内联,提高性能
3.冗余消除:对于一些判断,如果时false,则会去除

分享到:
评论

相关推荐

    java .class反编译成.java工具

    3. **加载.class文件**:在jd-gui的界面中,点击“File”菜单,选择“Open Class...”选项,然后在弹出的对话框中选择需要反编译的.class文件。 4. **查看源代码**:jd-gui会自动反编译选定的.class文件,并在右侧...

    jvmjava,java实现的JVM。.zip

    《Java实现的JVM——深入...总结,"jvmjava"项目是一个极好的学习资源,它使开发者有机会亲手构建一个JVM,从底层理解Java应用程序的运行机制。无论是初学者还是经验丰富的开发者,都能从中受益,提升自己的技术水平。

    Java反编译工具把.class文件转换为.java文件

    Java作为一种广泛使用的编程语言,其编写的程序通常会被编译成字节码(.class文件),这些文件可以在任何支持Java虚拟机(JVM)的平台上运行。然而,有时候我们需要查看或理解这些.class文件中的具体逻辑,这就需要...

    JVM基础.doc

    **ClassLoader** 负责加载ClassFile到JVM中,它遵循双亲委派模型。常见的ClassLoader包括Bootstrap ClassLoader、Extension ClassLoader和App ClassLoader。 #### 四、内存模型、锁与同步 **Java内存模型** 主要...

    JVM原理.pdf

    类加载机制是Java语言中的一个核心概念,它负责将.class文件加载到内存中,创建对应的java.lang.Class对象。JVM将类加载过程分为加载、链接(验证、准备、解析)、初始化三个阶段。这个过程是动态的,它允许程序在...

    Java jvm虚拟机.zip

    Java源代码(.java文件)通过Java编译器(javac)被编译成字节码(.class文件),这是一种中间表示,可以在任何支持JVM的平台上运行。这是因为JVM负责将字节码解释为特定平台的机器指令。 JVM的主要组件包括类装载...

    动态编译字符串成java,并且添加class到jvm

    在Java编程中,动态编译字符串成Java代码并将其加载到JVM(Java虚拟机)是一种高级技巧,常用于运行时代码生成、元编程或插件系统等场景。这一技术的核心在于利用Java的反射API和Java Compiler API。下面将详细阐述...

    java反编译工具用于.class文件编译成.java文件

    Java源代码(.java文件)经过Java编译器(javac)编译后,会生成Java字节码(.class文件),这是一种中间语言,能在Java虚拟机(JVM)上运行。字节码不包含原始的源代码信息,因此无法直接阅读其具体的实现细节。 ...

    jvm tools.rar

    《深入理解JVM工具——开启Java世界探索之旅》 在Java开发领域,JVM(Java Virtual Machine)扮演着至关重要的角色。它不仅是Java程序运行的基础,更是优化代码、解决性能问题的关键所在。为了更好地理解和利用JVM...

    NeatJVM,java中的jvm实现.zip

    《深入解析NeatJVM:Java中的JVM实现》 在Java编程领域,JVM(Java虚拟机)是每一个开发者必须了解的关键组成部分。NeatJVM是一个开源项目,旨在为开发者提供一个清晰、简洁的Java虚拟机实现,帮助我们更好地理解和...

    运行eclipse提示JVM错误的解决

    在使用Eclipse进行开发的过程中,有时可能会遇到JVM(Java虚拟机)错误的问题。这类问题通常表现为启动Eclipse时出现错误提示,例如“jvm terminated. Exit code=-1”。本文将详细介绍这一问题的原因以及具体的解决...

    JVM调优篇.pdf

    JVM类加载机制是Java虚拟机中的一种机制,它负责加载Java类文件到内存中,以便执行Java程序。类加载机制分为五个阶段:加载、验证、准备、解析和初始化。 加载 加载是类加载过程中的一个阶段,这个阶段会在内存中...

    JVM笔记.docx

    1. 类装载器(ClassLoader):负责加载.class文件,将字节码内容解析并存储到内存中,同时根据双亲委派模型进行类的加载。类装载器分为启动类加载器(Bootstrap ClassLoader)、扩展类加载器(Extension ClassLoader...

    JVM之用Java解析class文件共10页.pdf.zi

    总结起来,"JVM之用Java解析class文件"这一主题涵盖了从class文件的结构到JVM加载机制的多个层面。通过学习这一领域,开发者可以更好地理解Java程序的生命周期,提高问题诊断能力,并能利用字节码技术实现高级编程...

    jvm解析编译过的class文件

    Java虚拟机(JVM)是Java程序运行的基础,它负责解析和执行编译后的.class文件。这个过程涉及多个阶段,包括加载、验证、准备、解析和初始化。在本篇文章中,我们将深入探讨JVM如何解析并执行这些编译过的类文件。 ...

    Java分布式应用学习笔记-谈JVM.doc

    JVM的主要任务包括:将.java文件编译成.class文件、加载已有.class文件、执行.class文件以及管理内存分配和回收。JVM还通过与操作系统交互来实现多线程和并发。内存主要分为四个区域:方法区、堆区、栈区和本地方法...

    Java面试需要掌握的JVM知识.docx

    1. **类装载器(ClassLoader)**:负责加载.class文件到内存。类加载器按照双亲委派模型工作,即先由父类加载器尝试加载,只有当父类加载器无法找到或加载指定类时,才会由子类加载器进行加载。这保证了Java的安全性...

    java-jvm虚拟机原理.ppt

    Java虚拟机(JVM)是Java程序运行的核心组件,它为Java代码提供了平台无关的运行环境。本篇文章将深入探讨JVM的生命周期、体系结构、类加载机制、内存区域以及垃圾收集。 首先,JVM的生命周期与Java程序紧密关联。...

    全面理解JVM虚拟机.rar

    JVM通过解析CLASS文件来创建并执行Java类。了解CLASS文件格式能帮助开发者更好地理解代码在JVM中的表现。 3. 类加载 类加载机制包括加载、验证、准备、解析和初始化五个阶段。JVM使用类加载器(ClassLoader)来...

Global site tag (gtag.js) - Google Analytics