簡體   English   中英

LMAX Disruptor 垃圾收集器如何友好

[英]How is LMAX Disruptor garbage collector friendly

我試圖了解 lmax 破壞者是如何對 GC 友好的。 我看到環上的事件對象被重用,但是,在這些對象上“設置”的“數據”在堆上,所以感覺垃圾收集的好處僅限於每個事件少 1 個對象。 如果“數據”是原始數據類型,則堆上沒有任何額外內容,因此在這種情況下的好處非常明顯。 每個事件中 GC 的 1 個對象是否重要,或者這比我對 GC 的理解還多。

這篇文章http://mechanitis.blogspot.com/2011/06/dissecting-disruptor-whats-so-special.html垃圾收集器在這里幾乎沒有什么可做的- 這對我來說不是很明顯,因此是問題。

環形緩沖區充當對象池 - 當您聲明序列時,您可以將數據復制到事件中,並且當所有事件處理程序完成處理后,事件將再次返回到環形緩沖區。

訣竅是確保將數據復制到事件中,因此事件可以保存您可能希望在生產者和消費者之間進行通信的所有不同類型的數據。 如果您只是在生產者端的堆上分配一個對象並將對該對象的引用傳遞給事件,那么您顯然根本不會減少 GC 的內存壓力。

另一種方法是有一個事件,它只是一些堆外內存的偏移量,可以通過使用享元將其解釋為不同類型的對象。

暫無
暫無

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

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