java - 类加载后隔离问题
巴扎黑
巴扎黑 2017-04-18 09:45:42
0
3
375

我知道在JVM识别类的方式是通过classLoader和全类名识别的,那么当一个类由两个不同的classLoader加载后。
对这个类初始化时,JVM会选择对哪个类进行初始化?其依据是什么?
两个classLoader加载的Class对象在内存中的位置有什么区别吗?

例如:

有人提出看工程结构,我把加载器和被加载对象的结构放出来吧:


被加载的类也是在classpath下的

巴扎黑
巴扎黑

membalas semua(3)
阿神

Ringkasnya:

1、ClassLoad可以有很多,而且它们之间存在层级关系,最顶层的叫做BootClassLoad。
2、每层ClassLoad都用自己的工作范围。
3、每个ClassLoad中都有一个上级ClassLoad的引用。
4、当某一个ClassLoad开始工作时(加载Class),他会首先调用上级ClassLoad来Load Class,层层向上,直到顶层。
5、只有当上级ClassLoader没能在职责范围内Load到指定Class时,下级ClassLoader才会在自己的职责范围内来Load。

Untuk maklumat lanjut, cuma cari di enjin carian untuk kata kunci "Model Perwakilan Ibu Bapa".

Ty80

Di luar topik, saya rasa kod ini sangat kemas dan kelihatan selesa

PHPzhong

Pengamatan di sini boleh difahami sebagai langkah terakhir pemuatan kelas (memanggil <clinit> Jika dua Beban Kelas yang berbeza dimuatkan, maka <clinit> akan dilaksanakan dua kali dan objek Class yang dimuatkan berada dalam kaedah. kawasan. (Generasi kekal), dan akan sepadan dengan dua objek Class

Jika kod kaedah

terlebih muatan, hasil akhir hendaklah dua findClass Kod di atas, kerana fail true akhirnya di bawah class, diserahkan kepada AppLoader untuk dimuatkan perlu memaparkan kesannya, anda perlu mengalihkan fail classpath ke lokasi selain class Poster asal melebihkan kaedah classpath loadClass

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan