java类 连接时机_java类的加载时机
類加載
它直接表現出來的代碼應該是 ClassLoader.getSystemClassLoader().loadClass("com.my.test.AbcClass")。所以具 體完成類的加載工作的,是常被提到的類加載器ClassLoader,它就是專門干這件事的。“類的加載”具體而言就是指將類.class文件中的二進制 數據讀入到內存中將其放在方法區內,然后在堆區創建一個java.lang.Class對象,所以說“加載”的最終產出是堆中的一個Class對象,它一 產生,加載這件事就干完了。這里又引出一個東東——方法
上圖截自畢玄大師的ppt,描繪了jvm內存的布局,書中都會說到方法區中存放的是類信息、類的field信息、方法信息都在其中;另外以前聽到過一種說法:“堆(新生代+老生代)是留給java開發人員使用的,非堆(持久帶即方法區)是留給jvm自己使用的”。再回過頭看上面的描述——“類的加載”就是指將類的.class文件中的二進制數據讀入到內存中將其放在方法區內,然后在堆區創建一個 java.lang.Class對象,換句換說“類的加載”就是為了給程序員一個可以獲得類相關定義信息的窗口,這個窗口就是Class對象,類加載的過 程中將方法區的結構化類定義信息映射到堆里的一個實體Class對象中,進而程序員可以通過這道橋梁最終得到該類的一個實例,比如調用Class的 newInstance()。
類的加載時機
目前我理解類的加載時機不受程序員控制,由jvm自己控制,或許它需要考慮一些優化策略,比如對于一些jvm認為未來很可能需要用到的類,jvm可 以在空閑時提前加載,即提前準備好堆中的Class對象。類加載最遲的時機應該很明確,等同于類的初始化時機,下面說初始化時會說到。
總結
以上是生活随笔為你收集整理的java类 连接时机_java类的加载时机的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎样炒虾仁脆嫩又入味?
- 下一篇: c语言猜四位数游戏猜10次,C语言猜数字