java
2021-02-01 11:33:15 4 举报
双亲委派机制
作者其他创作
大纲/内容
它负责加载JRE的扩展目录,lib/ext或者由java.ext.dirs系统属性指定的目录中的JAR包的类。由Java语言实现,父类加载器为null。
其中通过Studeng.class实例化出来的对象相当于每个个体,但是都屬於Student.class,每个实例化出来的对象都可以拥有自己的属性,堆里的变量名通过hashcode值来调用栈里对应的引用
通过hashcode找对应的引用
类加载器
向上(父类)委托
当用户定义一个类,并且使用main方法启动这个类,jvm(虚拟机)会先通过系统类加载器去找该类,如果没有回去扩展类加载器找该类,如果没有还会去根加载器找这个类。
系统类加载器system class loader
它用来加载 Java 的核心类,是用原生代码来实现的,并不继承自 java.lang.ClassLoader(负责加载$JAVA_HOME中jre/lib/rt.jar里所有的class,由C++实现,不是ClassLoader子类)。由于引导类加载器涉及到虚拟机本地实现细节,开发者无法直接获取到启动类加载器的引用,所以不允许直接通过引用进行操作。
getClassLoader
栈
根加载器bootstrap class loader
Class Loader
初始化
扩展类加载器extensions class loader
父类解决不了,交给子类自己处理
实例化的变量名称是存放在栈里
存放实例化对象的属性s1:name:s1s2:name:s2s3:name:s3
Student.class
Student类
s1,s2,s3
new
被称为系统(也称为应用)类加载器,它负责在JVM启动时加载来自Java命令的-classpath选项、java.class.path系统属性,或者CLASSPATH换将变量所指定的JAR包和类路径。程序可以通过ClassLoader的静态方法getSystemClassLoader()来获取系统类加载器。如果没有特别指定,则用户自定义的类加载器都以此类加载器作为父加载器。由Java语言实现,父类加载器为ExtClassLoader。
堆
getClass
Student的实例化对象
0 条评论
下一页