2013-08-04 264 views
0

正如我們所知垃圾收集器相信世代收集的哲學。其中短期/小對象放在第0代,我相信L2處理器或核心緩存(糾正我,如果我在這裏是錯誤的)更快的訪問。考慮到這一點,Gen 1和Gen 2的位置在哪裏?垃圾收集和存儲

回答

1

GC代和緩存/內存之間沒有直接關係。

內存管理器只是從一塊內存開始,並從內存中分配。代碼使用它。

處理器跟蹤內存使用情況,所以最近使用的內容通常存儲在處理器可以最快速訪問的地方。根據使用模式,最近使用的數據可能來自任何一代。

There is最近創建的對象被頻繁使用的趨勢以及使用較舊的對象的頻率稍低。這往往會導致最近創建的對象位於L1高速緩存中,L2中稍舊的對象並且在主內存中仍然較舊。這只是一個普遍的趨勢,而不是內存管理器強制執行的任何事情。在任何時候,每一級緩存很可能包含一些來自兩三代的對象。

另請注意,當數據加載到緩存中時,只有正在訪問的部分被加載到緩存中。所以,如果你有一個大對象,那麼最近被訪問過的一部分對象可能在一級緩存中,另外一些在二級緩存中訪問較少的部分,而其餘部分只在主內存中訪問。

+0

基於您的簡報,大型對象(大小大於L1或L2大小)在何處被存儲,如果它們被頻繁訪問。我們可以推測,它總是在主內存中生活嗎? – Nair