垃圾回收器-Java面(miàn)試題
Java中垃圾回收的目的是什麼(me), 它什麼(me)時(shí)候被(bèi)使用 ?
垃圾回收用于識别和丢棄程序不再需要的對(duì)象, 以便回收和複用資源.
System.gc() 和Runtime.gc()方法用途?
這(zhè)些方法用于提醒JVM開(kāi)始垃圾回收. 然而開(kāi)始垃圾回收的時(shí)機是由JVM決定的.
finalize()什麼(me)時(shí)候被(bèi)調用 ? 它的目的是什麼(me) ?
finallize方法是在釋放該對(duì)象内存前由gc(垃圾回收器)調用. 通常建議在這(zhè)個方法中釋放該對(duì)象持有的資源.
如果一個對(duì)象的引用被(bèi)設置爲null, gc會(huì)立即釋放該對(duì)象的内存麼(me)?
不會(huì), 這(zhè)個對(duì)象將(jiāng)會(huì)在下一次gc循環中被(bèi)回收.
Java堆的結構是什麼(me) ? 堆中的Perm Gen(全稱是Permanent Generation)空間是什麼(me) ? JVM有一個運行時(shí)數據區,即堆(heap).所有的類實例和數組的内存都(dōu)是從堆中分配的. 它在JVM啓動時(shí)被(bèi)創建. 對(duì)象所占用的堆内存會(huì)被(bèi)一個稱爲垃圾回收器的自動内存管理系統收回. 堆内存中包含活的和死的對(duì)象. 活的對(duì)象可以被(bèi)程序訪問并且不會(huì)被(bèi)垃圾回收. 死的對(duì)象是那些不會(huì)被(bèi)程序訪問的, 但還(hái)沒(méi)有被(bèi)垃圾回收器收回的對(duì)象. 這(zhè)種(zhǒng)對(duì)象會(huì)占用堆内存空間直到最終被(bèi)垃圾回收器收回. Serial 垃圾回收器與 Throughput 垃圾回收器區别 ? Throughput垃圾回收器使用并行版本的新生代回收器, 它用于中到大型數據集的應用. 另一方面(miàn), Serial回收器通常足以應對(duì)大多數的小應用(在現代處理器上不會(huì)超過(guò)約100MB的堆内存). |
|
什麼(me)時(shí)候對(duì)象會(huì)被(bèi)回收 ?
垃圾回收發(fā)生在指定的JVM區域 ? |