我有一組圖像存儲在Int16
類型的3D數組中,我緩存的圖像數量可以達到600或更多,這會影響垃圾收集性能的內存性能。 我聽說可以增強內存管理的內存平鋪,因爲它將子數組元素設置在單獨的塊中。
- 我可以在我的情況下使用內存平鋪嗎?
- 如果是,我該如何使用它?內存平鋪管理和大對象c#
5
A
回答
3
1
垃圾收集將受益於收集儘可能少的東西。多維陣列將被視爲一個單個分配:
short[,,] a = new short[2,3,4];
鋸齒狀陣列將使用許多不同分配。它更小的分配大小可能會更快分配,但它可能把更多的應變在GC回收期間:
short[][][] a = new short[2][][];
我從來沒有聽說過「記憶拼接」之前,因此,如果你能解釋那是什麼,我可能會更好地回答你的問題。
+0
許多計算機應用程序都需要處理大數據數組。由於較差的內存訪問模式,這些應用程序在分頁虛擬內存(VM)系統下可能表現不佳。這個問題的一個解決方案是平鋪,這種技術將 陣列劃分爲與VM頁面一對一映射的子陣列。 ==>從此pdf複製:http://www.usenix.org/publications/library/proceedings/sa92/franklin.pdf –
相關問題
- 1. C++類,對象和內存管理
- 2. objective-c對象內存管理
- 3. C++內存管理對象矢量
- 4. 平鋪JAXB對象
- 5. 未管理對象的內存管理
- 6. C#內存/對象理解
- 7. Java - 平鋪地圖對象
- 8. 內存中的對象和一般的內存管理
- 9. 內存管理c
- 10. 管理內存C++
- 11. C內存管理
- 12. objective-c內存管理 - 對象保證存在多久?
- 13. 內存管理/緩存昂貴對象在C#
- 14. C++類中Objective-c對象的內存管理
- 15. 可可內存管理NSArray與對象
- 16. 單例對象內存管理
- 17. 對象實例內存管理
- 18. 如何管理對象的內存
- 19. 複製對象時的內存管理
- 20. 不可變對象的內存管理
- 21. Qt對象的Qt內存管理
- 22. 內存管理與靜態對象
- 23. Objc對象釋放內存管理
- 24. 互操作對象的內存管理
- 25. 內存管理問題:釋放對象
- 26. 平鋪地圖上的多平鋪對象
- 27. 處理2.0b8 /處置PGraphics對象和內存管理
- 28. Linux內存管理和大文件
- 29. MATLAB塊大小和內存管理
- 30. 使用Glade和gtkmm對GTK +對象進行內存管理
你的數組是如何定義的? 'new short [n] [] []'或'new short [x,y,z]'?換句話說,它真的是一個多維數組還是它是一個鋸齒形數組?你怎麼知道它會影響GC的性能? – svick
600-ish物體什麼也沒有。抓住一個內存分析器,看看到底發生了什麼。 – sisve
@svick @svick我的數組是短[x,y,z]形式,因爲我搜索了很多內存泄漏的原因,我發現大對象影響GC的性能,有些人不得不打電話給GC。在這種情況下收集,所以最好短[x,y,z]或短[x] [y] [z] ?,感謝您的回覆 –