黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國(guó)咨詢/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學(xué)習(xí)攻略 Java常見的相關(guān)基礎(chǔ)知識(shí)

Java常見的相關(guān)基礎(chǔ)知識(shí)

更新時(shí)間:2019-12-06 15:25:09 來源:動(dòng)力節(jié)點(diǎn) 瀏覽2800次

 

27 拷貝.jpg

  一道類加載的問題,一個(gè)類,在類加載之后,如果對(duì)類的內(nèi)容進(jìn)行修改,如何在不重新啟動(dòng)虛擬機(jī)的情況下,加載已經(jīng)變化過的類

  你可以創(chuàng)建個(gè)新的class loader,然后用loadClass加載,再newInstance;原來加載的classloader是不能重新加載的;這算是一個(gè)典型的容器思路。

  《深入理解java虛擬機(jī)》

  對(duì)java“書寫一次,到處運(yùn)行”(Write once, run anywhere)的理解?

  一次編譯、到處運(yùn)行”說的是Java語言跨平臺(tái)的特性,Java的跨平臺(tái)特性與Java虛擬機(jī)的存在密不可分,可在不同的環(huán)境中運(yùn)行。比如說Windows平臺(tái)和Linux平臺(tái)都有相應(yīng)的JDK,安裝好JDK后也就有了Java語言的運(yùn)行環(huán)境。其實(shí)Java語言本身與其他的編程語言沒有特別大的差異,并不是說Java語言可以跨平臺(tái),而是在不同的平臺(tái)都有可以讓Java語言運(yùn)行的環(huán)境而已,所以才有了Java一次編譯,到處運(yùn)行這樣的效果。

  嚴(yán)格的講,跨平臺(tái)的語言不止Java一種,但Java是較為成熟的一種。“一次編譯,到處運(yùn)行”這種效果跟編譯器有關(guān)。編程語言的處理需要編譯器和解釋器。Java虛擬機(jī)和DOS類似,相當(dāng)于一個(gè)供程序運(yùn)行的平臺(tái)。

  程序從源代碼到運(yùn)行的三個(gè)階段:編碼——編譯——運(yùn)行——調(diào)試。Java在編譯階段則體現(xiàn)了跨平臺(tái)的特點(diǎn)。編譯過程大概是這樣的:首先是將Java源代碼轉(zhuǎn)化成.CLASS文件字節(jié)碼,這是第一次編譯。.class文件就是可以到處運(yùn)行的文件。然后Java字節(jié)碼會(huì)被轉(zhuǎn)化為目標(biāo)機(jī)器代碼,這是是由JVM來執(zhí)行的,即Java的第二次編譯。“到處運(yùn)行”的關(guān)鍵和前提就是JVM。

  Java代碼的整個(gè)生命周期如圖:

面試必備 | Java常用基礎(chǔ)知識(shí)(一)

 

  談?wù)勀銓?duì) Java 平臺(tái)的理解?“Java 是解釋執(zhí)行”,這句話正確嗎?

  Java 本身是一種面向?qū)ο蟮恼Z言,最顯著的特性有兩個(gè)方面,一是所謂的“書寫一次,到處運(yùn)行”(Write once, run anywhere),能夠非常容易地獲得跨平臺(tái)能力;另外就是垃圾收集(GC, Garbage Collection),Java 通過垃圾收集器(Garbage Collector)回收分配內(nèi)存,大部分情況下,程序員不需要自己操心內(nèi)存的分配和回收。

  對(duì)于“Java 是解釋執(zhí)行”這句話,這個(gè)說法不太準(zhǔn)確。我們開發(fā)的 Java 的源代碼,首先通過 Javac 編譯成為字節(jié)碼(bytecode),然后,在運(yùn)行時(shí),通過 Java 虛擬機(jī)(JVM)內(nèi)嵌的解釋器將字節(jié)碼轉(zhuǎn)換成為最終的機(jī)器碼。但是常見的 JVM,比如我們大多數(shù)情況使用的 Oracle JDK 提供的 Hotspot JVM,都提供了 JIT(Just-In-Time)編譯器,也就是通常所說的動(dòng)態(tài)編譯器,JIT 能夠在運(yùn)行時(shí)將熱點(diǎn)代碼編譯成機(jī)器碼,這種情況下部分熱點(diǎn)代碼就屬于編譯執(zhí)行,而不是解釋執(zhí)行了。

  請(qǐng)對(duì)比 Exception 和 Error,另外,運(yùn)行時(shí)異常與一般異常有什么區(qū)別?

  Exception 和 Error 都是繼承了 Throwable 類,在 Java 中只有 Throwable 類型的實(shí)例才可以被拋出(throw)或者捕獲(catch),它是異常處理機(jī)制的基本組成類型。

  Exception 和 Error 體現(xiàn)了 Java 平臺(tái)設(shè)計(jì)者對(duì)不同異常情況的分類。Exception 是程序正常運(yùn)行中,可以預(yù)料的意外情況,可能并且應(yīng)該被捕獲,進(jìn)行相應(yīng)處理。

  Error 是指在正常情況下,不大可能出現(xiàn)的情況,絕大部分的 Error 都會(huì)導(dǎo)致程序(比如 JVM 自身)處于非正常的、不可恢復(fù)狀態(tài)。既然是非正常情況,所以不便于也不需要捕獲,常見的比如 OutOfMemoryError 之類,都是 Error 的子類。

  Exception 又分為可檢查(checked)異常和不檢查(unchecked)異常,可檢查異常在源代碼里必須顯式地進(jìn)行捕獲處理,這是編譯期檢查的一部分。

  面試必備 | Java常用基礎(chǔ)知識(shí)(一)

  下面的代碼反映了異常處理中哪些不當(dāng)之處?

      image.png

  第一,盡量不要捕獲類似 Exception 這樣的通用異常,而是應(yīng)該捕獲特定異常,在這里是 Thread.sleep() 拋出的 InterruptedException。

  第二,不要生吞(swallow)異常。

  從性能角度來審視一下 Java 的異常處理機(jī)制,這里有兩個(gè)可能會(huì)相對(duì)昂貴的地方:

  ①、try-catch 代碼段會(huì)產(chǎn)生額外的性能開銷,或者換個(gè)角度說,它往往會(huì)影響 JVM 對(duì)代碼進(jìn)行優(yōu)化,所以建議僅捕獲有必要的代碼段,盡量不要一個(gè)大的 try 包住整段的代碼;

  ②、Java 每實(shí)例化一個(gè) Exception,都會(huì)對(duì)當(dāng)時(shí)的棧進(jìn)行快照,這是一個(gè)相對(duì)比較重的操作。如果發(fā)生的非常頻繁,這個(gè)開銷可就不能被忽略了。

  ClassNotFoundException的產(chǎn)生原因?

  Java支持使用Class.forName方法來動(dòng)態(tài)地加載類,任意一個(gè)類的類名如果被作為參數(shù)傳遞給這個(gè)方法都將導(dǎo)致該類被加載到JVM內(nèi)存中,如果這個(gè)類在類路徑中沒有被找到,那么此時(shí)就會(huì)在運(yùn)行時(shí)拋出ClassNotFoundException異常。

  談?wù)?final、finally、 finalize 有什么不同?

  final 可以用來修飾類、方法、變量,分別有不同的意義,final 修飾的 class 代表不可以繼承擴(kuò)展,final 的變量是不可以修改的,而 final 的方法也是不可以重寫的(override)。

  finally 則是 Java 保證重點(diǎn)代碼一定要被執(zhí)行的一種機(jī)制。我們可以使用 try-finally 或者 try-catch-finally 來進(jìn)行類似關(guān)閉 JDBC 連接、保證 unlock 鎖等動(dòng)作。

  finalize 是基礎(chǔ)類 java.lang.Object 的一個(gè)方法,它的設(shè)計(jì)目的是保證對(duì)象在被垃圾收集前完成特定資源的回收。finalize 機(jī)制現(xiàn)在已經(jīng)不推薦使用,并且在 JDK 9 開始被標(biāo)記為 deprecated。

  強(qiáng)引用、軟引用、弱引用、幻象引用有什么區(qū)別?具體使用場(chǎng)景是什么?

  所謂強(qiáng)引用(“Strong” Reference),就是我們最常見的普通對(duì)象引用,只要還有強(qiáng)引用指向一個(gè)對(duì)象,就能表明對(duì)象還“活著”,垃圾收集器不會(huì)碰這種對(duì)象。對(duì)于一個(gè)普通的對(duì)象,如果沒有其他的引用關(guān)系,只要超過了引用的作用域或者顯式地將相應(yīng)(強(qiáng))引用賦值為 null,就是可以被垃圾收集的了,當(dāng)然具體回收時(shí)機(jī)還是要看垃圾收集策略。

  軟引用(SoftReference),通過SoftReference類實(shí)現(xiàn)。是一種相對(duì)強(qiáng)引用弱化一些的引用,可以讓對(duì)象豁免一些垃圾收集,只有當(dāng) JVM 認(rèn)為內(nèi)存不足時(shí),才會(huì)去試圖回收軟引用指向的對(duì)象。JVM 會(huì)確保在拋出 OutOfMemoryError 之前,清理軟引用指向的對(duì)象。軟引用通常用來實(shí)現(xiàn)內(nèi)存敏感的緩存,如果還有空閑內(nèi)存,就可以暫時(shí)保留緩存,當(dāng)內(nèi)存不足時(shí)清理掉,這樣就保證了使用緩存的同時(shí),不會(huì)耗盡內(nèi)存。

  弱引用(WeakReference)通過WeakReference類實(shí)現(xiàn)。。并不能使對(duì)象豁免垃圾收集,在垃圾回收器線程掃描它所管轄的內(nèi)存區(qū)域的過程中,一旦發(fā)現(xiàn)了具有弱引用的對(duì)象,不管當(dāng)前內(nèi)存空間足夠與否,都會(huì)回收它的內(nèi)存。由于垃圾回收器是一個(gè)優(yōu)先級(jí)很低的線程,因此不一定會(huì)很快回收弱引用的對(duì)象。

  虛引用也叫幻象引用,通過PhantomReference類來實(shí)現(xiàn)。無法通過虛引用訪問對(duì)象的任何屬性或函數(shù)。幻象引用僅僅是提供了一種確保對(duì)象被 finalize 以后,做某些事情的機(jī)制。如果一個(gè)對(duì)象僅持有虛引用,那么它就和沒有任何引用一樣,在任何時(shí)候都可能被垃圾回收器回收。虛引用必須和引用隊(duì)列 (ReferenceQueue)聯(lián)合使用。

        以上就是動(dòng)力節(jié)點(diǎn)Java培訓(xùn)機(jī)構(gòu)小編介紹的“Java常見的相關(guān)基礎(chǔ)知識(shí)”的內(nèi)容,希望對(duì)大家有幫助,如有疑問,請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。

提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)

  • 全國(guó)校區(qū) 2025-05-15 搶座中
  • 全國(guó)校區(qū) 2025-06-05 搶座中
  • 全國(guó)校區(qū) 2025-06-26 搶座中
免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 性欧美video另类hd高清 | 久久国产午夜精品理论篇小说 | 黄色影院免费看 | 亚洲视频天天射 | 中文天堂| 欧美日本一二三区 | 国产成人综合在线视频 | 特级理论片 | 天天射综合 | 九九精品成人免费国产片 | 欧美综合中文字幕久久 | 日本一区二区三 | 欧美aaaa在线观看视频免费 | 午夜视频网站在线观看 | 欧美特级黄色 | 中文字幕一区日韩在线视频 | 成人在线播放av | 国产精品美女视视频专区 | 中文字幕亚洲综久久2021 | 日本免费黄色录像 | h视频在线免费观看 | 国产大片线上免费观看 | 一级理论片免费观看在线 | 久一在线视频 | 精品中文字幕制服中文 | 夜色福利院在线看 | 欧美极度极度另类 | 欧美黄色视屏 | 污视频在线免费 | www.欧美xxx| 日批免费观看视频 | 99精品视频看国产啪视频 | 天天舔日日干 | 日日噜噜夜夜躁躁狠狠 | 国产欧美日韩精品一区二 | 日韩精品区 | 亚洲一级黄色 | 欧美日本视频在线观看 | 午夜剧院官方 | 香蕉蕉亚亚洲aav综合 | 午夜日韩在线 |