解释 在java中Class.forName()和ClassLoader都可以对类进行加载。ClassLoader就是遵循双亲委派模型最终调用启动类加载器的类加载器,实现的功能是“通过一个类的全限定名来获取描述此类的二进制字节流”,获取到二进制流后放到JVM中。Class.forName()方法实际 ...
分类:
编程语言 时间:
2018-08-21 10:54:04
阅读次数:
159
1、load:加载类到内存,程序刚启动的时候调用,调用在main函数之前(只会被调用一次) 2、initialize:初始化类,类第一次使用的时候调用一次(只会被调用一次) 3、loadView:首先判断控制器是否有视图,没有就调用该方法,设置控制器的根view,重写该方法后,以该方法为主,xib ...
分类:
移动开发 时间:
2018-08-18 16:27:12
阅读次数:
173
我们知道Java虚拟机 —— JVM 是加载类的class文件的,而Android虚拟机——Dalvik/ART VM 是加载类的dex文件, 而他们加载类的时候都需要ClassLoader,ClassLoader有一个子类BaseDexClassLoader,而BaseDexClassLoader ...
分类:
其他好文 时间:
2018-08-17 20:54:44
阅读次数:
143
.class文件常量池 常量池主要存放两类常量: 字面量 和 符号引用 。 字面量指文本字符串等。 符号引用指: 类和接口的全限定名 字段的名称和描述符 方法的名称和描述符 编译期结束,当类加载器加载类时,.class文件常量被加入运行常量池,如果常量已存在则不再加载。 .class文件常量对象(如 ...
分类:
其他好文 时间:
2018-08-16 21:37:59
阅读次数:
169
1. 父类静态成员变量和静态代码块 (java虚拟机加载类时,就会执行该块代码,故只执行一次) 2.子类静态成员变量和静态代码块 (java虚拟机加载类时,就会执行该块代码,故只执行一次) 3. 父类普通成员变量 4. 父类普通代码块(每次new,每次执行 ) 5. 父类构造函数(每次new,每次执 ...
分类:
编程语言 时间:
2018-08-10 19:45:14
阅读次数:
190
一.JVM学习 1.1JVM运行机制的最重要的三点:加载(类加载器,classloader) 、内存管理(包含GC)、执行。 如果再加上JDK所作的把java文件编译为二进制class文件的步骤,就组成了Java代码的执行机制三部曲: 编译–>加载–>执行 2.1 Java编译机制 Java编译机制 ...
分类:
其他好文 时间:
2018-08-09 22:03:29
阅读次数:
146
一.目标: 1.什么是类的加载? 2.类的生命周期? 3.类加载器是什么? 4.双亲委派机制是什么? 二.原理 (类的加载过程及其最终产品): JVM将class文件字节码文件加载到内存中, 并将这些静态数据转换成方法区中的运行时数据结构,在堆(并不一定在堆中,HotSpot在方法区中)中生成一个代 ...
分类:
其他好文 时间:
2018-08-08 18:54:45
阅读次数:
157
每个类编译后产生一个Class对象,存储在.class文件中,JVM使用类加载器(Class Loader)来加载类的字节码文件(.class),类加载器实质上是一条类加载器链,一般的,我们只会用到一个原生的类加载器AppClassLoader,它只加载Java API等可信类,通常只是在本地磁盘中 ...
分类:
编程语言 时间:
2018-08-01 12:09:58
阅读次数:
180
类的生命周期 加载 验证 准备 解析 初始化 使用 卸载 验证、准备、解析为连接 解析与初始化交换顺序为动态绑定 类加载过程 包含了加载、验证、准备、解析、初始化阶段 1、加载 通过一个类的全限定名来获取此类的二进制字节流; 将这个字节流所代表的静态存储结构转换为方法区的运行时存储结构 在堆内存中生 ...
分类:
其他好文 时间:
2018-07-29 00:12:45
阅读次数:
168