1. 程式人生 > >2018年Android面試題含答案—適合中高階

2018年Android面試題含答案—適合中高階

① 新生區:新生區是類的誕生、成長、消亡的區域,一個類在這裡產生,應用,最後被垃圾回收器收集,結束生命。新生區又分為兩部分:伊甸區(Eden space)和倖存者區(Survivor pace),所有的類都是在伊甸區被new出來的。倖存區有兩個:0區(Survivor0 space)和1區(Survivor 1 space)。當伊甸園的空間用完時,程式又需要建立物件,JVM的垃圾回收器將對伊甸園進行垃圾回收(Minor GC,將伊甸園中的剩餘物件移動到倖存0區。若倖存0區也滿了,再對該區進行垃圾回收,然後移動到1區。那如果1去也滿了呢?再移動到養老區。若養老區也滿了,那麼這個時候將產生Major GC
FullGCC),進行養老區的記憶體清理。若養老區執行Full GC 之後發現依然無法進行物件的儲存,就會產生OOM異常“OutOfMemoryError”。如果出現java.lang.OutOfMemoryError: Java heap space異常,說明Java虛擬機器的堆記憶體不夠。原因有二: a.Java虛擬機器的堆記憶體設定不夠,可以通過引數-Xms-Xmx來調整。b.程式碼中建立了大量大物件,並且長時間不能被垃圾收集器收集(存在被引用)。