為什麼major gc要比minor gc慢很多

2021-09-02 18:23:53 字數 403 閱讀 1760

能想到的原因有兩個:

1. major gc使用的演算法複雜度比minor gc高;

major gc 採取的是mark-sweept或者mark-conpact,minor gc也要標記,但minor gc是標記後複製。將要被複製到的survivor區又是乙個連續的記憶體區。major gc的清除可能快一些,但是整理操作這個複雜度就要高很多了。

2.major gc要處理的物件要比minor gc的多。

新生代分配的物件大都是朝生夕死的,所以存活下來要複製的物件也不是很多。老年代裡的物件都是大概率存活的,要整理數量就多。

現在記憶體那麼便宜,老年代不用整理演算法也換成複製演算法,會不會更快一些。可能也是快不了多少的,因為主要原因還是老年代的存活的物件多。

為什麼Android系統要比ios卡。

1 由於安卓系統繼承了linux的記憶體管理機制,所以導致了許多程式被快取在記憶體中,僅僅預留一小部分。這是記憶體預留閥值,如果系統開啟的程式占用的記憶體大於預留空間,會觸發系統的程序的排程策略。這樣十分消耗系統資源的操作。頻繁的申請記憶體就會拖慢系統。所以安卓系統的記憶體機制是卡頓的根源,無法改變...

為什麼棧要比堆速度要快

大部分開發人員都知道棧和堆的區別,網上搜尋也有一大堆,但是,具體解釋棧和堆的速度差異,找到的資訊卻是寥寥無幾,而且,也都比較混亂.在這裡,就我所知的情況,大致描述一下棧為什麼要比堆快的原因.首先,棧是本著lifo原則的儲存機制,對棧資料的定位相對比較快速,而堆則是隨機分配的空間,處理的資料比較多,無...

為什麼我們需要位元幣(BCH)

凱恩斯曾說過,甚至一百萬個人裡都沒有乙個人能夠認識到 通程式設計客棧貨膨脹是如何摧毀本國貨幣的。基於學校對通貨膨脹的定義,公眾對通貨膨脹普遍存在誤解,無論或多或少這種情況一定是存在的。那麼你認為的通貨膨脹是什麼呢?令人驚訝的是即使是維基百科頁面也是不正確的。通貨膨脹的真正定義是貨幣 量的增加。和購買...