簡體   English   中英

JAVA GC重大GC對比次要GC

[英]JAVA GC Major GC vs Minor GC

在對延遲敏感的應用程序中,我們具有緩存數據(駐留在TG中)和壽命短的對象,這些對象在YG中消失了。 我已經看到次要GC時間和主要GC時間存在顯着差異。 我懷疑這與TG的相對較大有關。 任何人都可以解釋GC時間與TG大小如何相關 次要GC非常頻繁且快速。

在YG中少量收集下來的對象將移至TG / Old Generation,以釋放YG中的空間。 YG的大小保持較小,以確保次要收集不會花費太多時間,並且可以更頻繁地運行 在這些仍具有引用的次要GC對象期間,將其移至TG。

因此TG的大小更大,因為通常在幾乎沒有YG清理的情況下,較大的對象會移到這個部分 另外,TG中的清理操作不是很頻繁,因此可以分配更大的內存。

因此,次要GC會清理YG中的對象,但主要GC會清理YG和TG。

要點是GC時間不是由TG大小決定的,而是由其中對象的數量決定的。 性能敏感的應用程序不應將堆用於緩存。 現有各種各樣的緩存庫都支持堆外緩存。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM