千鋒教育2023版Java面試寶典Java面試200題(含美團(tuán)、字節(jié)、阿里大廠真

JVM調(diào)優(yōu)工具?
常用調(diào)優(yōu)工具分為兩類,jdk自帶監(jiān)控工具:jconsole和jvisualvm,第三方有:MAT(Memory
AnalyzerTool)、GChisto。
1、jconsole,JavaMonitoringandManagementConsole是從java5開始,在JDK中自帶的java
監(jiān)控和管理控制臺,用于對JVM中內(nèi)存,線程和類等的監(jiān)控
2、jvisualvm,jdk自帶全能工具,可以分析內(nèi)存快照、線程快照;監(jiān)控內(nèi)存變化、GC變化
等。
3、MAT,MemoryAnalyzerTool,一個基于Eclipse的內(nèi)存分析工具,是一個快速、功能豐富
的Javaheap分析工具,它可以幫助我們查找內(nèi)存泄漏和減少內(nèi)存消耗
4、GChisto,一款專業(yè)分析gc日志的工具
Java中的引用類型有幾種?
1、強(qiáng)引用
如果一個對象具有強(qiáng)引用,它就不會被垃圾回收器回收。即使當(dāng)前內(nèi)存空間不足,JVM
也不會回收它,而是拋出OutOfMemoryError錯誤,使程序異常終止。如果想中斷強(qiáng)引用和
某個對象之間的關(guān)聯(lián),可以顯式地將引用賦值為null,這樣一來的話,JVM在合適的時間就
會回收該對象。
2、軟引用
在使用軟引用時,如果內(nèi)存的空間足夠,軟引用就能繼續(xù)被使用,而不會被垃圾回收器
回收;只有在內(nèi)存空間不足時,軟引用才會被垃圾回收器回收
3、弱引用
具有弱引用的對象擁有的生命周期更短暫。因為當(dāng)JVM進(jìn)行垃圾回收,一旦發(fā)現(xiàn)弱引
用對象,無論當(dāng)前內(nèi)存空間是否充足,都會將弱引用回收。不過由于垃圾回收器是一個優(yōu)先
級較低的線程,所以并不一定能迅速發(fā)現(xiàn)弱引用對象
4、虛引用
顧名思義,就是形同虛設(shè),如果一個對象僅持有虛引用,那么它相當(dāng)于沒有引用,在任
何時候都可能被垃圾回收器回收。
虛引用必須和引用隊列關(guān)聯(lián)使用,當(dāng)垃圾回收器準(zhǔn)備回收一個對象時,如果發(fā)現(xiàn)它還有
虛引用,就會把這個虛引用加入到與之關(guān)聯(lián)的引用隊列中。程序可以通過判斷引用隊列中是
否已經(jīng)加入了虛引用,來了解被引用的對象是否將要被垃圾回收。如果程序發(fā)現(xiàn)某個虛引用
已經(jīng)被加入到引用隊列,那么就可以在所引用的對象的內(nèi)存被回收之前采取必要的行動