`
baoxiaofei
  • 浏览: 31893 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

每天学一点:java虚拟机9

    博客分类:
  • JAVA
阅读更多
类型的声明周期
所有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程序的运行速度;
分享到:
评论

相关推荐

    JVM内幕:java虚拟机详解

    一个文档让你读懂什么事java虚拟机,让你的编程生涯更加的透彻!

    Scala程序设计:Java虚拟机多核编程实战

    资源名称:Scala程序设计:Java虚拟机多核编程实战资源截图: 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。

    精品:java虚拟机分析与优化PPT

    主题:java虚拟机分析与优化 ——演讲者 李 镭 您是否曾经对WebSphere所使用的JVM如何运作感到好奇?您如何调整它使得Java应用运行得稳定顺畅?它能够提供哪些信息让您的Java应用充分利用系统资源?为了能够使得您...

    深入理解Android(二):Java虚拟机Dalvik

    深入理解Android(二):Java虚拟机Dalvik

    Android虚拟机ART

    Android虚拟机ART

    Java虚拟机规范.Java SE 8版.zip

    《Java核心技术系列:Java虚拟机规范(Java SE 8版)》由Oracle官方发布,Java虚拟机技术创建人撰写,国内资深Java技术专家翻译。书中基于全新Java SE 8,完整且准确地阐述Java虚拟机规范,是深度了解Java虚拟机和...

    Java虚拟机规范.Java SE 8版

    《Java核心技术系列:Java虚拟机规范(Java SE 8版)》由Oracle官方发布,Java虚拟机技术创建人撰写,国内资深Java技术专家翻译。书中基于全新Java SE 8,完整且准确地阐述Java虚拟机规范,是深度了解Java虚拟机和...

    java虚拟机学习

    java虚拟机学习 java虚拟机学习java虚拟机学习java虚拟机学习java虚拟机学习

    java虚拟机规范高清中文版本(java SE 8版本)

    第1章 :简单地介绍了Java虚拟机的历史并吹捧了←_← 一下Java的平台无关性(一次编译,到处运行); 第2章:概览Java虚拟机整体架构; 第3章:介绍如何将Java语言编写的程序转换为虚拟机指令集; 第4章:定义...

    java虚拟机OutOfMemoryError:Java heap space堆dump文件

    java虚拟机OutOfMemoryError:Java heap space堆dump文件,可以直接用来分析。

    java虚拟机规范 jdk8.

    《Java核心技术系列:Java虚拟机规范(Java SE 8版)》由Oracle官方发布,Java虚拟机技术创建人撰写,国内资深Java技术专家翻译。书中基于全新Java SE 8,完整且准确地阐述Java虚拟机规范,是深度了解Java虚拟机和...

    java虚拟机规范(java SE7)

    第二章:java虚拟结构(运行时区域内存:寄存器,java虚拟机栈,java堆,方法去,运行时常量池,本地方法栈); 第三章:为java虚拟机编译; 第四章:Class文件格式; 第五章:加载、链接与初始化

    《深入理解Android:卷I》

    《深入理解Android:卷I》,资源大小:2.66 MB,欢迎下载

    与我一起学 JVM:Java 虚拟机内存组成概况

    与我一起学 JVM:Java 虚拟机内存组成概念前言Java 虚拟机内存划分运行时数据区域程序计数器Java 虚拟机栈局部变量表本地方法栈Java 堆方法区运行时常量池直接内存 前言 刚开始看《深入理解Java虚拟机》,文章主要就...

    自己动手写Java虚拟机 (Java核心技术系列)@

    本书摒弃了传统的以解读枯燥的Java虚拟机规范文档和分析繁琐的Java虚拟机源代码的方式来讲解Java虚拟机,取而代之的是,以实践的方式,引导读者如何从零开始构建和实现一个Java虚拟机,整个过程不仅能让读者做到对...

    Java虚拟机规范 Java SE 8版

    《Java核心技术系列:Java虚拟机规范(Java SE 8版)》由Oracle官方发布,Java虚拟机技术创建人撰写,国内资深Java技术专家翻译。书中基于全新Java SE 8,完整且准确地阐述Java虚拟机规范,是深度了解Java虚拟机和...

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

    4.6 网络移动性:java设计的中心 4.7 资源页 第5章 java虚拟机 5.1 java虚拟机是什么 5.2 java虚拟机的生命周期 5.3 java虚拟机的体系结构 5.3.1 数据类型 5.3.2 字长的考量 5.3.3 类装载器子...

    深入理解 java 虚拟机

    java 虚拟机

    Scala程序设计_Java虚拟机多核编程实战

    本书循序渐进地介绍了Scala的函数式编程基础,虽然篇幅短小,却切中要害。读者可以学会使用Scala静态语言的强大功能创建简洁、可扩展、高度可并行的代码。对于多核时代JVM上的并发编程,Scala是绝好的工具,而本书是...

    java虚拟机规范(java se 7)

    《Java虚拟机规范 7》是一份完整的描述Java虚拟机是如何设计的规范文档。这份文档对于任何一个希望实现Java虚拟机的编译器作者,或者希望实现一个与规范相兼容的Java虚拟机的程序员来说都是必不可少的。

Global site tag (gtag.js) - Google Analytics