类加载器加载的是一个对象 .class还没有生成对象
1.如何识别 .class 文件
魔数 javap -verbose 包名.类名
2.识别到对应的class文件后该如何去加载它
依赖于类加载器
(Bootstrap ClassLoader(爷) 根加载器 JAVA_HOME/jre/lib )
(ExtClassLoader (子) 扩展类加载器 jre/lib/ext/jar )
(SystemClassLoader (孙) 系统类加载器 自己写的类
AppClassLoader )
双亲委派模型
- loadClass负责通过双亲委派模型加载类
- findclass根据包的的路径找到class文件
- defineClass负责从字节码中加载Class对象,然后Class对象通过反射机制生成对象的
如果说自己实现一个类加载器 findClass(重写)
使用双亲委派模型这种机制的好处是什么?
生成对象的四种方式
1.new
2.clone
3.反射
4.反序列化
Field Methond Contrcutor
内存泄漏 jamp命令
* 测试内存泄漏的方法 System.gc();
* jps :打印当前进程号
* jmap -histo:live 进程号 > log.txt
* start log.txt
* 查找你需要看的类的实例个数