类型的声明周期
所有java虚拟机必须实现在每个类或者接口首次主动使用时初始化。以下六种情形符合主动使用要求:
1、创建某个类的新实例;
2、调用某个类的静态方法,即在字节码中执行invokestatic指令时;
3、使用某个类或者接口的静态字段,或者对静态字段赋值(在字节码中执行getstatic、putstatic指令)。用final修士的静态字段除外,他被初始化为一个编译时的常量表达式;
4、调用某些反射方法时;
5、初始化某个类的子类;
6、虚拟机起动时某个被标明为启动类的类(含main()方法的类);
只有在某个接口所声明的非常量字段被使用时,该接口才会被初始化;
装载:
三个基本动作,要装载一个类型,java虚拟机必须:
1、通过该类型的完全限定名,产生一个代表该类的二进制数据流;
2、解析这个二进制数据流为方法区内的内部数据结构;
3、创建一个表示该类型的java.lang.Class 类的实例;
如果一个类装载器在预先装载时遇到缺失或者错误的class文件,它必须等到程序首次主动使用该类时才报告错误。
验证:
虚拟机在装载的时候要检查每个类的超类(object类之外)是否已经被加载。
1、各类之间二进制兼容的检查:
1.1 final类不能拥有子类;
1.2 final方法不能被覆盖;
1.3 确保类型和超类之间没有不兼容的方法声明;
1.4 检查所有常量池入口相互之间一致;
1.5 检查常量池中的所有特殊字符串(类名、字段名、方法名、字段描述符、方法描述符)是否符合格式;
1.6 字节码的完整性;
在连接过程中一次性验证字节码流,而非在程序执行的时候动态验证,提高了java程序的运行速度;
分享到:
相关推荐
第1章 :简单地介绍了Java虚拟机的历史并吹捧了←_← 一下Java的平台无关性(一次编译,到处运行); 第2章:概览Java虚拟机整体架构; 第3章:介绍如何将Java语言编写的程序转换为虚拟机指令集; 第4章:定义...
深入 Java 虚拟机.pdf Java 虚拟机(Java Virtual Machine,JVM)是 Java 语言的 runtime 环境,是 Java 程序执行的核心组件。它提供了一个平台无关的环境,允许 Java 程序在不同的操作系统和硬件平台上运行。 一...
《Java核心技术系列:Java虚拟机规范(Java SE 8版)》由Oracle官方发布,Java虚拟机技术创建人撰写,国内资深Java技术专家翻译。书中基于全新Java SE 8,完整且准确地阐述Java虚拟机规范,是深度了解Java虚拟机和...
读书笔记:java 虚拟机,深入理解Java虚拟机 JVM高级特性与最佳实践
**Android虚拟机ART详解** Android运行环境的核心组成部分之一就是虚拟机,从早期的Dalvik到现在的Android RunTime(ART),这一进化过程极大地提升了Android应用的性能和效率。本文将深入探讨ART的工作原理、优势...
技术部研发团队技术干货分享:Java虚拟机.
### Java虚拟机分析与优化关键知识点 #### 一、Java虚拟机基础知识 1. **Java虚拟机(JVM)概述** - Java是一种面向对象的编程语言,具有“一次编写,到处运行”的特点。 - Java代码通过编译器转换为字节码,由...
资源名称:Scala程序设计:Java虚拟机多核编程实战资源截图: 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。
读书笔记:Java虚拟机从入门到精通
Java基础知识学习:包括JVM虚拟机、对象模型等Java基础知识代码案例Java基础知识学习:包括JVM虚拟机、对象模型等Java基础知识代码案例Java基础知识学习:包括JVM虚拟机、对象模型等Java基础知识代码案例Java基础...
### 深入理解Android(二):Java虚拟机Dalvik #### 一、背景与研究目的 在深入了解Dalvik虚拟机之前,我们先来探讨一下背景与研究目的。随着移动设备性能的不断提高,Android系统因其开放性而吸引了众多开发者...
2. 字节码验证:Java虚拟机对字节码进行验证,检查其是否符合Java虚拟机的规范。 3. 字节码执行:Java虚拟机执行字节码,通过解释或编译来执行字节码指令。 4.垃圾回收:Java虚拟机的垃圾回收机制可以自动回收不再...
读书笔记:java虚拟机详解jvm从入门到精通
编程选择题40道:Java虚拟机:内存模型与垃圾回收机制.Tex.docx
《Java核心技术系列:Java虚拟机规范(Java SE 8版)》由Oracle官方发布,Java虚拟机技术创建人撰写,国内资深Java技术专家翻译。书中基于全新Java SE 8,完整且准确地阐述Java虚拟机规范,是深度了解Java虚拟机和...
9. 虚拟机的快速运行:Java虚拟机具备快速运行的能力,它保证了主程序运行的快速响应。 10. 虚拟化技术与安全:虚拟化技术可以大幅提高系统的安全性,因为它提供了一个隔离的环境,可以防止潜在的攻击和恶意软件。 ...
java虚拟机OutOfMemoryError:Java heap space堆dump文件,可以直接用来分析。
《Java核心技术系列:Java虚拟机规范(Java SE 8版)》由Oracle官方发布,Java虚拟机技术创建人撰写,国内资深Java技术专家翻译。书中基于全新Java SE 8,完整且准确地阐述Java虚拟机规范,是深度了解Java虚拟机和...
1. Java虚拟机的裁减和安装:Java虚拟机需要裁减和安装到ARM平台上,以满足嵌入式设备的资源限制。 2. Java核心类库的裁减和安装:Java核心类库需要裁减和安装到ARM平台上,以满足嵌入式设备的资源限制。 3. Java...
- **内存模型**:Java虚拟机的内存模型是理解Java程序执行过程的关键,包括堆、栈、方法区等多个部分。这些区域在Java虚拟机启动时会被初始化,并且有着各自特定的用途和生命周期。 - **类文件格式**:Java虚拟机...