WPF Memory Usage

前端 未结 5 732
礼貌的吻别
礼貌的吻别 2021-02-08 20:56

Application:

  • WPF Application consisting of a textbox on top and a listbox below
  • Users type a string in the TextBox to find employees, and search results
相关标签:
5条回答
  • 2021-02-08 21:31

    You could use

    WPF Performance Suite

    Optimizing WPF Application Performance

    A similar issue haunts me.. (something like)

    At application startup I query the database and retrieve all employees and related information to be shown in the ListBox. This is kept in memory the entire time.

    May be you could modify your code to follow WPF: Data Virtualization

    0 讨论(0)
  • 2021-02-08 21:36

    I've noticed that there are some issues in WPF and .NET 3.5 SP1 w.r.t memory issues in seemingly innocuous situations.

    I did find a couple of resources, but I'm not sure they would be helpful to you:

    http://blog.ramondeklein.nl/?p=58

    That blog post describes a situation whereupon when

    1. A style is defined in the application’s ResourceDictionary.
    2. The style uses a control template that uses media effects (i.e. DropShadowEffect).
    3. The media effect should be referenced using a StaticResource

    In a nutshell, I think your solution would be to ensure that any media effects (dropshadow, etc) use static resources.

    0 讨论(0)
  • 2021-02-08 21:42

    It really seems to be memory leaking. Probably, some of the UI elements in the DataTemplate keep references to other objects that should stay alive even when the UI element is destroyed.

    There could be some memory leaks with Image control. Try removing it from the template and see the result. Also, are you subscribing to any events in controls' Loaded events or something like that?

    Just some guesses though... As people already said here you might really want to look at your app with performance and memory profilers.

    0 讨论(0)
  • 2021-02-08 21:50

    At the risk of being glib, you have a memory leak. Why not try a tool like ANTS* to track it down. They have a free trial, I've never used it but it has a good reputation.

    *Other profiling tools are available.

    If you don't want to get to grips with another tool, you can try something like incrementing a static member every time a class is created and decrementing it every time an instance is disposed. This will help you track down instances that are not be destroyed properly.

    0 讨论(0)
  • 2021-02-08 21:51

    One thing that helped me a lot was to use a class wrapping the Stream class. This is explained in detail here and sure enough I saved a lot of memory by using this method. WPF really keeps the reference to the underlying byte[] and stream for each picture.

    0 讨论(0)
提交回复
热议问题