java中类加载的两种方法是啥?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中类加载的两种方法是啥?相关的知识,希望对你有一定的参考价值。

参考技术A java类有两种方法一种是类方法就是用static修饰的,一种是实例方法,就是没有static修饰的方法 参考技术B 一种是new xxx()实例化 一种用反射Class clazz = Class.forName(“xxx”);追问

这两个不是创建对象的两种方式么?

追答

对啊 你创建不就加载了啊,先将编译后的java类文件(.class文件)中的二进制数据读入内存,并将其放在运行时数据区的方法区内,然后再堆区创建一个java.lang.Class对象,用来封装类在方法区的数据结构。
即加载后最终得到的是Class对象,并且更加值得注意的是:该Java.lang.Class对象是单实例的,无论这个类创建了对少个对象,它的
Class对象是唯一的!而加载并获取该Class对象可以通过三种途径:Class.forName(类的全名称)、实例对象.class(属性)、实
例对象getClass()。
在连接和初始化阶段,其实静态变量经过了两次赋值:第一次是静态变量类型的默认值;第二次是我们真正赋给静态变量的值。
Java对类的使用分为两种方式:主动使用和被动使用。

GC的两种判定方法

1、引用计数法

如果某个地方引用了这个对象就+1,如果失效了就-1,当为0就会回收但是JVM没有用这种方式,因为无法判定相互循环引用(A引用B,B引用A)的情况

技术图片

 

 

2、引用链法(可达性分析)

通过一种GC ROOT的对象(虚拟机栈(栈帧中的本地变量表)中引用的对象、方法区中类静态属性引用的对象、方法区中常量引用的对象、本地方法栈中JNI(即一般说的Native方法)引用的对象)来判断,如果有一条链能够到达GC ROOT就说明,对象还在被引用,不能到达GC ROOT就说明对象已经不再被引用,可以回收

可达:

技术图片

 

 不可达:

技术图片

 

以上是关于java中类加载的两种方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

创建线程有哪两种方法,它们各自的优缺点是啥?

GC的两种判定方法

xml文件 加载properties文件的两种方法与注意事项

常用的打开数据库的两种方法是啥?

java中的Runnable类是啥意思?

目前使用的两种常见动态路由协议算法是啥方法