想象一下,您正在模擬粒子物理。那麼,你的每個物體都有一個位置矢量,它以每秒幾次的速度改變。如果你的向量沒有被破壞而只是被複制,那麼這會不會導致你的程序在內存溢出之前氾濫?使用不可變列表是否需要大量內存?
回答
想象一下,你正在模擬粒子物理。
我會盡力的。
你,那麼,對每個對象的
我只是認爲那些只是每個SIM抽象的基本粒子,實驗數據不TB的幾個位置向量。
它以每秒幾次的速率改變。如果你的向量沒有被破壞而只是被複制,那麼這會不會導致你的程序使用過多的內存直到它結束?
除上述所有上下文外,這是一個非常基本的問題。答案是「視情況而定」。
收集您的語言垃圾嗎?特別是哪種語言(沒有雙關語意思)?
你需要提供歷史數據嗎?或者更一般地說,首先不破壞載體的原因是什麼?他們都仍然被積極使用,引用?
如果你需要所有的SIM卡,即對上述問題的答案是:是的,但你可以做的不多。也許a)使用尺寸優化的,可能是自定義的數據和列表類型,b)如果實際適用 - 取決於數據的易變性 - 應用一種模式,允許您只存儲差異(不變的矢量可以作爲以前的版本等)
如果你不需要他們的運行SIM卡,但需要保持他們「爲以後」,只需將它們衝出光盤足夠大,以避免浪費IO週期,之後步驟同樣適用於...:
如果您完全不需要它們,請確保允許垃圾回收器有效地工作(同樣,細節取決於使用的語言)或釋放它們或重新使用分配的內存等...
這是一個非常普遍的問題和你給的上下文,雖然它讓你感興趣,但並沒有給我們太多的幫助。
當然,取決於列表的大小。
我不會把位置向量在粒子物理學中的不可變列表類,因爲他們很可能是短暫的和不斷變化的(除非你打破費米的原則,並讓他們固定。)
我要說美國國家縮寫名單將是更好的選擇,因爲這些縮寫不會改變 - 不包括分離運動和戰爭。
如果你在談論java,垃圾收集是自動的,並且可以隨時發生。我製作了一個程序,將matrix1複製到matrix2和matrix2到matrix3(每個2k個元素),每秒1000次。沒問題:)
哇,很高興知道。 – MaiaVictor
- 1. 散列表需要大量內存
- 2. symfony:表單代需要大量內存
- 3. GD庫是否使用大量內存?
- 4. 爪哇 - 是否空變量需要的內存空間
- 5. NSTimer的內存管理 - 是否需要分配給變量?
- 6. 計算列表大小,是否需要使用free()?
- 7. Alamofire .dowload需要大量內存(ios,swift)
- 8. 發佈需要大量內存的popover
- 9. h2o雲需要大量內存嗎?
- 10. Quaqua主題需要大量內存
- 11. 是否需要通過C#中的內存障礙訪問不可變對象?
- 12. 應用程序是否有可能需要零內存泄漏?
- 13. 是否需要局部變量?
- 14. pthread_once_t變量是否需要互斥鎖?
- 15. 這裏是否需要內存隔離?
- 16. 大內存的需要
- 17. CSS查詢是否需要最大寬度變量?
- 18. F#需要重寫代碼才能不需要可變變量
- 19. Python:檢查項目是否存在可變數量的列表
- 20. GD在調整大小時是否需要這麼多內存?
- 21. 從Cuda傳輸大量可變內存
- 22. Python列表是否可變?
- 23. thread_local變量是否需要使用互斥鎖定?
- 24. attr_accessor是否需要在Ruby中使用符號作爲變量?
- 25. 我是否需要發佈使用OBJC_ASSOCIATION_RETAIN_NONATOMIC設置的@dynamic變量?
- 26. 設置屬性值時是否需要使用臨時變量?
- 27. ATL/WTL是否仍然需要使用全局_Module變量?
- 28. 簡單分配變量時是否需要使用鎖定?
- 29. 是否需要釋放函數返回的變量的內存(C)?
- 30. 變量需要保存
你的程序洪水*(在我的帖子中的錯誤),我問這是因爲這個概念,讓所有的東西不可變=好,我不知道我明白。 – MaiaVictor