2016-02-25 29 views
3

我正在處理a real-time multiplayer game,我在服務器和客戶端都使用Redux來存儲應用程序的狀態。有什麼辦法可以在Redux中「提交」狀態來釋放內存嗎?

但是,由於我的遊戲是實時的,因此發送到商店的操作數量明顯高於通常的應用程序。我懷疑這就是Redux使用大量內存的原因。

據我瞭解,Redux將所有分派到內存中的操作存儲在內存中,以便能夠執行其「time traveling」。我還注意到Redux DevTools允許你提交狀態。

我想要做的是提交應用程序,例如每10秒鐘節省一次內存。無論如何,我從來沒有必要在我的應用程序中返回超過10秒鐘,因此即使出於調試目的,存儲所有操作似乎也是不必要的。

Redux支持嗎?如果沒有,有沒有辦法實現這種行爲?

預先感謝您!

+0

你使用的是任何的REDX日誌記錄中間件? – Clarkie

+0

我在開發期間在客戶端應用程序中使用Redux DevTools。然而,上述問題也出現在沒有使用其他中間件的生產環境中。 – Crisu83

回答

5

請注意,儘管Redux DevTools確實存儲了啓用時間行程調試功能的操作歷史記錄,但Redux本身並未 - 它只保留對當前狀態的引用。由於渲染動作列表和存儲內容,DevTools還有一些額外的開銷。

除此之外:是什麼讓你說Redux是「使用大量內存」? Redux使用的唯一內存是代表存儲狀態所需的任何內存。除非你有一些實際顯示內存問題的特定基準,否則我不會認爲這是一個有意義的問題。

+1

所以你說的是Redux只將當前狀態存儲在內存中,沒有其他的東西?如果是這樣,那是個好消息。 :) – Crisu83

+2

除非您仍然有在生產*或*中運行的Redux開發工具,否則您的代碼中存在對舊版本狀態的引用。儘管* redux *不能保持舊狀態,其他的事情可能會發生。 – Tyrsius

+5

這個答案是正確的。 Redux不會保留舊狀態,但DevTools會一直執行,直到您「提交」。 –

相關問題