类加载器和内存泄漏

类加载器加载的是一个对象 .class还没有生成对象
1.如何识别 .class 文件

魔数    javap -verbose 包名.类名

2.识别到对应的class文件后该如何去加载它
依赖于类加载器

(Bootstrap ClassLoader(爷)    根加载器          JAVA_HOME/jre/lib )
 (ExtClassLoader       (子)     扩展类加载器     jre/lib/ext/jar   )
 (SystemClassLoader    (孙)     系统类加载器     自己写的类        
  AppClassLoader                                                     )

这里写图片描述

双亲委派模型

  1. loadClass负责通过双亲委派模型加载类
  2. findclass根据包的的路径找到class文件
  3. 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
* 查找你需要看的类的实例个数

猜你喜欢

转载自blog.csdn.net/qq2899349953/article/details/80551607