c# visual studio 2017 CPU profiling out of memory exception - c#

I've got a long running c# application that I'm profiling in visual studio 2017 community edition. Runs for about 2/3 hours before I stop the profiling (and application) to see the CPU usage. However I can see when its building the reports the memory usage increases by 3GB then throws an out of memory exception.
Profiling started.
Profiling process ID 7312 (test).
Starting data collection. The output file is C:\Users\jamie\Source\Repos\test(1).vspx
Profiler stopping.
Stopping data collection.
Merging collection data. Please wait...
Data is saved in file C:\Users\jamie\Source\Repos\test(1).vspx
Profiling finished.
Exception of type 'System.OutOfMemoryException' was thrown.
Is there anything I can do to fix this or do I just have to get more memory?
Oddly the total memory usage on my machine is around 65% when it throws this so its not even using all my memory to build the profiling reports.
This is a fresh install of VS and its got all the default settings.

Related

Running .Net application on visual studio code in MacBook pro

I am doing C# programming in Visual Studio Code in MacBook Pro, so whenever I run the application, a dotnet process is left in the memory, when I open the Activity Monitor the memory is not disposed, and the CPU is running at 100% even after the debugging is stopped. Is something wrong with my code or is there anything else that I should be doing while writing c# code in Mac OS. Please let me know, right now after every run I am opening activity monitor and force quitting the process.
You just need to have .Net Core and C# extension installed.
The High CPU consumption is often caused by an issue in an extension.
You can open the Process Explorer using Help>Open Process Explorer to view the list of running VS Code processes running in real-time where you'll find what is causing High CPU consumption where extensions are executed by the Extension Host process.
If the High CPU consumption isn't caused by VS Code then it's probably your code and you'll have to optimize it.
You can check the Performance Issues Wiki for more details here

Unable to launch UWP Application using .Net Memory Profiler

I want to see my UWP Application performance and Memory Leakage using .Net Memory Profiler. When I am trying to launch my application I am getting below error.
May I know how to run my application using .Net Memory Profiler.
This may not be an answer to why .NET memory profiler does not work with UWP, but here is an alternative.
Visual Studio 2015 and above come in-built with visual diagnostic tools that let you quickly identify memory and performance related issues. Take a look at Tools for profiling and performance

.NET application memory usage Visual Studio 2005

I've got a C# application running on Windows CE smart device and I recently added a new graphing option which results in a "OutOfMemory" exception after running for a few hours. How do I find what is going wrong? The code looks fine, its based on one of the previous graphing options that runs for weeks without a problem.
I've tried the Debug > Windows > Memory options in VS 2005, but they all give the message "Unavailable when debuggee is running." I've also tried attaching to the process using the remote debugging tools (specifically the Windows CE Remote Process Viewer), but there's not enough functionality to see what I'm looking for.
Are there tools in VS 2005 to analyse either a remote C# app or one running locally (ie. Win32)?
a) see Memory profiler for .NET Compact Framework
b) see CF remote performance and ... viewer: http://www.microsoft.com/en-us/download/details.aspx?id=13442&751be11f-ede8-5a0c-058c-2ee190a24fa6=True
looks like you have a memory leak in code.

DbContext slow on debug build

Note: I've seen this, but I don't have Intellitrace as I'm on Pro, not Ultimate
When I run my application on a debug build, it takes a long time to open the DBContext for the first time. Then it has the expected slightly larger amount of lag afterwards. In the Release build, it's about 20x faster. My app is a WPF app, relying on the EF6-SQLite converter from Brice Lambson's blog and a local database (SSD, so no real storage bottleneck). I'm running VS2013 Pro from Dreamspark. It's compiled to MSIL (All CPU). Any help?
This will be fixed in version 6,0,2, currently available as beta version from Nuget

Analyzing memory dump to find leak

We have a c# .NET application that has a memory leak in it. I used procdump to get a memory dump from a running instance of the application from a production machine. The production machine is running 32 bit Windows XP, and .NET 4.0.
The exe config is set to .net 4.0
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" />
When I pull the dump to my dev box, windows 8.1 64bit, and open it with VS 2013 the dump is initially opened fine. However, when I click the Debug Managed Memory action I get the following error message:
Memory analysis is not supported for the CLR version used in this process.
I'm new to troubleshooting memory leaks in Windows and managed memory environments, and know next to nothing about the tools involved. I did a google search for the error I get, and didn't find anything. Any help is appreciated. I apologize if I am missing something obvious - Junior Dev here :-)
I don't know if procdump can be used to find a memory leak in .NET. One effective way I tried is: using Windbg and SOS. There are two posts explains how to use Windbg+ SOS to track .NET memory leaks:
Where's your leak at? [Using WinDbg, SOS, and GCRoot to diagnose a .NET memory leak]
Debugging managed code memory leak with memory dump using windbg
If you don't like Windbg, the tool DebugDiag is also very effective tool in tracking down memory leaks.
See this link, it only works on process running under .Net 4.5
Before I begin, there are a few things to note about the "Debug
Managed Memory" feature discussed in this post:
The option will only be available from the dump summary page in the
Ultimate version of Visual Studio 2013. If you are using Premium or
Professional you will not see the option
The process the dump file was collected against must have been running on .NET 4.5 or higher. If the dump was collected on 3.5 or
previous the option will not appear, if it was collected on 4.0 it
will fail to launch with an error message.
Starting with Windows 7 /Server 2008 R2 there is a way to create a clone of a process and create a dump of this clone so that the process you care about doesn't need to be suspended. Use procdump -r to use this feature when capturing a dump.
You can also use capture a ETW trace and analyze the data with PerfView.
https://superuser.com/questions/846079/how-can-i-create-a-memory-dump-of-a-production-system-without-affecting-performa/846156#846156

Categories