Diagnosing memory leaks in .NET apps
Ғылым және технология
In this episode, Software Engineer, Mike Rousos, joins Rich to show can we can use tools like dotnet-dump and Visual Studio to diagnose memory leaks in our .NET applications, even if they're running on a different OS.
[00:55] - What are memory leaks?
[04:45] - Inspecting memory leaks cross platform
[18:30] - Using dotnet-dump
[21:35] - Inspecting dumps in Visual Studio
[27:03] - Inspecting dumps with dotnet-dump
🙋♀️🙋♂️ Get your questions answered on the Microsoft Q&A for .NET: aka.ms/dotnet-qa
🏫 Learn C#, F#, and .NET with free self-guided learning from Microsoft Learn: aka.ms/learndotnet
Пікірлер: 22
Very helpful ! very happy to see diagnosing memory leaks subject in action into the .NET community
Excellent video! Very informative and well presented. We need more showcases of this type of tool.
The most common managed code memory leaks I had the pleasure to locate were almost always objects which had a method registered to a static event. For some reason a lot of developer think, that these are weakly referenced. By now I know what to search for, but since these are also often some kind of lambda expression, their origin is often very difficult to locate.
This was such an incredibly informative video.. thanks a LOT
I've never heard 2 guys so open about when they take a dump
Very good explanation, thank you so much for this. One question, you talked about gcroot command in video position 32.31 but i can't see that commend, can you explain what command you typed to get the location in actual source code?
Very helpful thank you
Very good. Thanks
By any chance you got an update about the OutOfMemoryException not tearing down process?
Great video. How can we get a creation stack trace. Which method created the instance. Thanks!
Is the GC aware of constructions like object A is holding a ref to object B and B is holding a reference to A, but no one else references A or B. Would it collect those objects at some point or not?
@taishi-sama-tfc
Жыл бұрын
Yes, it's one of the tasks of GC to clean up cyclic references. In .NET this done by creating a graph that contains all the objects that are reachable from the roots(static fields, local variables on a thread's stack, CPU registers, GC handles and etc.) and releasing all memory allocated for objects, unreachable from the application's roots.
Useless if you don't use the enterprise VS :( we don't have debug managed memory option when we open the dump file
@NiklasLord
Жыл бұрын
I noticed that too. You can use dotnet-gcdump instead and open that in VS. Should be the same commands etc just add the gc part.
I have VS 2022 Community and I cannot find Actions > Debug managed memory after I open the dump file. Is it available for my version of VS?
@vyacheslavmikhailov7974
Жыл бұрын
Only in Enterprise it seems.
I could help but laugh at 16:31 😂 r/nocontext
@vincidixit
2 жыл бұрын
😂
@prasannachoudhari8552
2 жыл бұрын
@@vincidixit 😬
its cool that it works on windows but on my macos i have wierd behavior.. so running clrstack gives something like failed to find runtime module (libcoreclr.dylib). thats on .net 6.0 app build with rider using the arm sdk