java类的延迟初始化及其特性
来源:互联网 发布:verilog mac 编辑:程序博客网 时间:2024/04/30 01:24
jvm通过classLoader来加在编译生成class文件。来生成可操作的java类视图。
但是java并不是在一开始的时候就将会将程序中所有的class文件都加载起来。而是在需要的时候可以动态加载,这给java带来了更多的灵活性。像从网络的下载的class文件可以在程序运行的过程中动态的加载,或者运行时的安全的类型转换。这是c++这种静态编译语言所无法实现的。
当然动态加载也有其缺点,比如慢启动,运行的过程中对class文件的加载编译拖慢了整个程序的运行速度(相当于把部分编译时的工作转移到运行时来做这就是所谓的动态编译即 java jit),所以在程序运行一段时间后才能完全展示其性能。
下面的情况会触发class的load过程:
初始化一个类,包括执行这个类的静态初始化和初始化在这个类中声明的静态字段。根据java语言规范,在首次发生下列任意一种情况时,一个类或接口类型T将被立即初始化:
- T是一个类,而且一个T类型的实例被创建;
- T是一个类,且T中声明的一个静态方法被调用(初始化函数虽然未声明,但确实是一个静态函数,参自-java编程思想14章 类型信息);
- T中声明的一个静态字段被赋值;
- T中声明的一个静态字段被使用,而且这个字段不是一个常量字段;
- T是一个顶级类(top level class,见java语言规范的§7.6),而且一个断言语句嵌套在T内部被执行。
未完.....待续
0 0
- java类的延迟初始化及其特性
- 转 Java类加载的延迟初始化
- Java动态性: 类加载时的延迟初始化
- Java动态性: 类加载时的延迟初始化
- java如何安全的延迟初始化
- Java使用延迟初始化
- 变量的延迟初始化
- java并发中的延迟初始化
- java并发中的延迟初始化
- java多线程之延迟初始化
- Java延迟初始化的2种经典模式
- 隐藏特性:Java的初始化代码块
- Java类及其类成员的初始化(一)—类的初始化
- Java类及其类成员的初始化(二)—类成员的初始化
- spring的延迟初始化bean
- Spring Bean的延迟初始化
- 线程安全的延迟初始化
- Java过滤器及其特性
- 数据导出至EXECL
- base64
- JDK知识点复习总结
- oracle数据库编码问题解决办法
- 安完windows 8.1 9600之后,马不停蹄要做的几件事:
- java类的延迟初始化及其特性
- transifex 学习 备忘
- 设计模式之抽象工厂模式
- java 追加内容到文件末尾的几种常用方法
- 第一篇博客
- 文献阅读个人体会
- gcc去除未用到的函数
- 拓胜第二十三天
- 过滤下拉