国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務(wù)器之家 - 編程語(yǔ)言 - JAVA教程 - java基礎(chǔ)學(xué)習(xí)筆記之類加載器

java基礎(chǔ)學(xué)習(xí)筆記之類加載器

2020-03-28 11:27hebedich JAVA教程

java中的類加載器:java虛擬機(jī)中可以安裝多個(gè)類加載器,系統(tǒng)默認(rèn)三個(gè)主要類加載器,每個(gè)類負(fù)責(zé)加載特定位置的類:BootStrap, ExtClassLoader,AppClassLoader類加載器也是一個(gè)java類,因此類加載器也需要被加載,所以必須有第一個(gè)類加載器

類加載器

java類加載器就是在運(yùn)行時(shí)在JVM中動(dòng)態(tài)地加載所需的類,java類加載器基于三個(gè)機(jī)制:委托,可見(jiàn),單一。

把classpath下的那些.class文件加載進(jìn)內(nèi)存,處理后成為字節(jié)碼,這些工作是類加載器做的。

  1. 委托機(jī)制指的是將加載類的請(qǐng)求傳遞給父加載器,如果父加載器找不到或者不能加載這個(gè)類,那么再加載他。
  2. 可見(jiàn)性機(jī)制指的是父加載器加載的類都能被子加載器看見(jiàn),但是子加載器加載的類父加載器是看不見(jiàn)的。
  3. 單一性機(jī)制指的是一個(gè)類只能被同一種加載器加載一次。

默認(rèn)類加載器

系統(tǒng)默認(rèn)三個(gè)類加載器:

  1. BootStrap
  2. ExtClassLoader
  3. AppClassLoader

類加載器也是java類,而B(niǎo)ootStrap不是。 驗(yàn)證代碼:

?
1
2
3
4
5
public class ClassLoaderTest {
  public static void main(String[] args) {
    System.out.println(System.class.getClassLoader());
  }
}

輸出:null

如果使用System.out.println(System.class.getClassLoader().toString);,則報(bào)空指針異常:

?
1
2
3
4
5
6
7
Exception in thread "main" java.lang.NullPointerException
  at com.iot.classloader.ClassLoaderTest.main(ClassLoaderTest.java:10)
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  at java.lang.reflect.Method.invoke(Method.java:483)
  at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)

可見(jiàn),System類是由BootStrap類加載器加載。

類加載器的委托機(jī)制

類加載器的樹(shù)狀圖

類加載器

一般加載類的順序:

  1. 首先當(dāng)前線程的類加載器去加載線程中的第一個(gè)類
  2. 如果類A應(yīng)用了類B,java虛擬機(jī)將使用加載類A的類加載器來(lái)加載類B
  3. 還可以直接調(diào)用ClassLoader.loadClass()方法來(lái)制定某個(gè)類加載器去加載某個(gè)類

自定義類加載器的編寫原理

API:

Class ClassLoader

模板方法設(shè)計(jì)模式

父類:

loadClass(類加載的流程,模板)
findClass供子類覆蓋的、被loadClass方法調(diào)用的類加載邏輯
defineClass得到class文件轉(zhuǎn)換成字節(jié)碼

子類:覆蓋findClass方法

例子:

loadClass方法的源碼

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
protected Class<?> loadClass(String name, boolean resolve)
  throws ClassNotFoundException
{
  synchronized (getClassLoadingLock(name)) {
    // First, check if the class has already been loaded
    Class<?> c = findLoadedClass(name);
    if (c == null) {
      long t0 = System.nanoTime();
      try {
        if (parent != null) {
          c = parent.loadClass(name, false);
        } else {
          c = findBootstrapClassOrNull(name);
        }
      } catch (ClassNotFoundException e) {
        // ClassNotFoundException thrown if class not found
        // from the non-null parent class loader
      }
 
      if (c == null) {
        // If still not found, then invoke findClass in order
        // to find the class.
        long t1 = System.nanoTime();
        c = findClass(name);
 
        // this is the defining class loader; record the stats
        sun.misc.PerfCounter.getParentDelegationTime().addTime(t1 - t0);
        sun.misc.PerfCounter.getFindClassTime().addElapsedTimeFrom(t1);
        sun.misc.PerfCounter.getFindClasses().increment();
      }
    }
    if (resolve) {
      resolveClass(c);
    }
    return c;
  }
}

API文檔中的例子:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class NetworkClassLoader extends ClassLoader {
   String host;
   int port;
 
   public Class findClass(String name) {
     byte[] b = loadClassData(name);
     return defineClass(name, b, 0, b.length);
   }
 
   private byte[] loadClassData(String name) {
     // load the class data from the connection
     . . .
   }
 }

 

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 成人av专区 | 49vv看片免费| 久久久久久成人 | 天操天天干 | 国产精品亚洲综合 | 亚洲成人激情在线 | 91极品视频在线观看 | 久久久久综合视频 | 毛片免费观看视频 | 中国一级黄色片子 | 93看片淫黄大片一级 | 久久国产区 | 日韩精品一区二区在线观看 | 求av网址 | 久久午夜羞羞影院免费观看 | 在线观看的av | 国产欧美精品一区二区三区 | 超碰综合 | 欧美精品一区二区三区在线播放 | 另类综合在线 | 国产一区二区三区免费 | 精品中文一区 | 都市激情在线视频 | 久久久性色精品国产免费观看 | 黄色免费看片网站 | 女人高潮特级毛片 | jlzzjlzz国产精品久久 | 国产激情偷乱视频一区二区三区 | av黄色网页 | 黄色一级视频在线观看 | 爱爱h视频 | 国产精品一区二区视频 | 亚洲精品一区二区三区在线 | 成人黄色短视频在线观看 | 狠狠干网站 | 龙珠z国语291集普通话 | 国产视频一区二区三区在线观看 | 黄色毛片免费 | 日韩成人在线免费观看 | 中文在线一区二区 | 日本免费视频 |