內(nèi)存溢出和內(nèi)存泄露的區(qū)別
1替梨、內(nèi)存溢出
內(nèi)存溢出指的是程序在申請內(nèi)存的時候,沒有足夠大的空間可以分配了装黑。
2副瀑、內(nèi)存泄露
內(nèi)存泄露指的是程序在申請內(nèi)存之后,沒有辦法釋放掉已經(jīng)申請到內(nèi)存曹体,它始終占用著內(nèi)存俗扇,即被分配的對象可達但無用。內(nèi)存泄露一般都是因為內(nèi)存中有一塊很大的對象箕别,但是無法釋放铜幽。
從定義上可以看出滞谢,內(nèi)存泄露終將導致內(nèi)存溢出。
注意除抛,定位虛擬機問題內(nèi)存問題的時候第一步就是要判斷到底是內(nèi)存溢出還是內(nèi)存泄露狮杨,前者好判斷,跟蹤堆棧信息就可以了到忽;后者比較復雜一點橄教,一般都是老年代中的大對象沒釋放掉,要通過各種辦法找出老年代中的大對象沒有被釋放的原因喘漏。
并行和并發(fā)的區(qū)別
這兩個名詞都是并發(fā)編程中的概念护蝶,在談論垃圾收集器的上下文語境中,可以這么理解這兩個名詞:
1翩迈、并行Parallel
多條垃圾收集線程并行工作持灰,但此時用戶線程仍然處于等待狀態(tài)
2、并發(fā)Concurrent
指用戶線程與垃圾收集線程同時執(zhí)行(但并不一定是并行的负饲,可能會交替執(zhí)行)堤魁,用戶程序在繼續(xù)運行,而垃圾收集程序運行于另一個CPU上
Minor GC和Full GC的區(qū)別
1返十、新生代GC(Minor GC)
指發(fā)生在新生代的垃圾收集動作妥泉,因為大多數(shù)Java對象存活率都不高,所以Minor GC非常頻繁洞坑,一般回收速度也比較快
2盲链、老年代GC(Major GC/Full GC)
指發(fā)生在老年代的垃圾收集動作,出現(xiàn)了Major GC检诗,經(jīng)常會伴隨至少一次的Minor GC(但并不是絕對的)匈仗。Major GC的速度一般要比Minor GC慢上10倍以上