WebHU - Programozási kérdések és válaszok

Okozhat-e memóriaszivárgást az ItemsControl egy nem ObservableCollection-hez kötése?

A WPF-alkalmazások memóriaszivárgásának lehetséges okainak kutatása közben erre a cikkre bukkantam:

https://oz-code.com/blog/net-c-tips/top-3-memory-leak-inducing-pitfalls-of-wpf-programming

Ez a cikk a következő megalapozatlan állítást fogalmazza meg (amelyet elismer), hogy a ObservableCollection-től eltérő gyűjteményekhez való kötődés szivárgást okoz:

Kerülje a nem ObservableCollection gyűjteményekhez való kötődést


Kicsit vázlatos vagyok a részletekkel kapcsolatban. Még nem sikerült megtalálnom a probléma kiváltó okát, vagy nem találtam megerősítő blogbejegyzést vagy MSDN-cikket, de mégis: több esetben memóriaszivárgást tapasztaltam, amikor egy ItemsControl egy olyan ICollection-hez volt kötve, amely nem Nem egy ObservableCollection, és ennek megváltoztatása ObservableCollection-re megoldotta a problémát.

Ez pontos állítás? Vagy van valami más valószínűbb magyarázat?


Érdekelne, hogy a leírt műveletet okozhatta-e olyan objektumokhoz való kötődés, amelyek nem valósítják meg a INotifyPropertyChanged-t? (https://stackoverflow.com/a/18543350/3195477).


  • A lehetséges probléma reprodukálására szolgáló eszközök nélkül a kijelentésnek természetesen nincs értelme. IMO nyugodtan figyelmen kívül hagyhatod. 21.08.2020
  • @clemens köszönöm, jó hallani, hogy ez legalább nem általános probléma. Néhány memóriaproblémát keresek, így eggyel kevesebb dologra kell koncentrálnom. 22.08.2020
  • Mindig tartsd észben, hogy rengeteg szemét van az interneten. Sokan vannak, akiknek szüksége van arra, hogy tájékoztassák a világot tudásukról, de valójában semmivel sem okosabbak, mint te vagy én. Csak beszédesebb. 22.08.2020
  • @Clemens ezért kérdeztem itt :) 11.02.2021

Válaszok:


1

Nem egészen az, amit az OP kért, de remélem, elég közel ahhoz, hogy segítsek: https://blog.jetbrains.com/dotnet/2014/09/04/fighting-common-wpf-memory-leaks-with-dotmemory/:

A gyűjtőkötés szivárgása

A WPF kötésszivárgásához hasonló probléma a Collection kötési szivárgás. Ha olyan gyűjteményhez van kötve, amely nem valósítja meg az INotifyCollectionChanged felületet, a WPF erős hivatkozást hoz létre erre a gyűjteményre. Ennek eredményeként az alkalmazás teljes élettartama alatt a memóriában marad.

30.11.2020
Új anyagok

A rádiógomb ellenőrzött eseményének használata a jQueryben
Ebben a cikkben látni fogjuk, hogyan kell dolgozni a jquery választógombbal ellenőrzött eseményeivel. A választógombok HTML gombok, amelyek segítenek kiválasztani egyetlen értéket egy csoportból...

Körkörös függőségek megoldása terraformban adatforrásokkal – lépésről lépésre
Mi az a körkörös függőségek Dolgozzunk egy egyszerű eseten, amikor az SQS-sor és az S3-vödör közötti körkörös függőség problémája van egy egymástól függő címkeérték miatt. provider..

Miért érdemes elkezdeni a kódolást 2023-ban?
01100011 01101111 01100100 01100101 — beep boop beep boop Világunk folyamatosan fejlődik a technológia körül, és naponta fejlesztenek új technológiákat a valós problémák megoldására. Amint..

🎙 Random Noise #2  – Örökbefogadás és hit
az analitika íratlan világának gondozása Szeretné, hogy ezek a frissítések a postaládájába kerüljenek? Iratkozzon fel itt . "Ha önvezető autókat gyártanak, akkor mi miért ne..

A legrosszabb politika és prediktív modellek májátültetésre jelöltek számára az Egyesült Államokban
A máj (vagy óangolul lifer) az emberi test legnehezebb belső szervére utal, amely csendesen működik a nap 24 órájában. Mit csinál a máj? 500 feladatot hajt végre a szervezet egészségének..

5 webhely, amely 2022-ben fejleszti front-end fejlesztői készségeit
Frontendmentor.io A tényleges projektek létrehozásával a Frontendmentor.io segítséget nyújt a front-end kódolási képességeinek fejlesztésében. A kódolást azután kezdheti meg, hogy..

Mikor kell használni a Type-t az interfészhez képest a TypeScriptben?
A TypeScript a JavaScript gépelt szuperkészlete, amely statikus gépelést ad a nyelvhez. Ez megkönnyíti a robusztus és karbantartható kód írását azáltal, hogy a hibákat a fordítási időben..