Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

C# memory leak?

I am testing appfabric cache performance. To do this, from my local machine , I am hitting the cache host on the LAN. This cache host is running on Windows Server 2008 and except from the bare essentials has nothing installed on it. It has 8 gigs of RAM. It is also a VMware virtual server,

As soon as I hit the cache host, i can see the memory being used increases. But something very fishy is going on somewhere. the total primary data bytes that is being used is 1.5 Gigs. The Object size is 1,744 bytes (using ANTS profiler).The total object count is 2,521,451. I have disabled eviction. But, this is interesting, as soon as the server hits the throttled state, I can see that server's RAM is being used at 7.72 Gigs, but apart from the distributed cache using 1.8 gigs there is no other application thats using such a high quantity of RAM.

I am using Visual studio 2010 , and I am inserting and reading the objects in parallel

The question that I wanted to ask is :

Where is my memory going? The server in the throttled state says I am using 7.72 gigs of the alloted memory whereas in the task manager, i can see that barely 3 Gigs are being used (if i add all the running process's memory)

like image 491
Gagan Avatar asked Dec 01 '10 14:12

Gagan


2 Answers

Gagan, if you're still having this issue, can you download SysInternals' Process Monitor? You can find it here. Run it, and add columns for memory private bytes, working set, and virtual size. Peak private bytes and working set wouldn't hurt, either, and there are other memory columns you can add for fun : )

Task Manager doesn't give you the virtual size (Windows 7 lets you add Commit Size, don't know if Server 2008 also has that). This should give you a clearer picture of where the memory is going.

Let us know if that helps or you need further help pinning down where your memory is going!

like image 81
James King Avatar answered Sep 28 '22 20:09

James King


I'm not entirely sure on this, as it's not clear in your question where you're seeing the different RAM usage amounts (VMWare guest or host).

When running VMWare Server on Server 2008, the memory usage reported by Task Manager on the host does not take into account the Virtual Machines individual usages. I noticed this a while ago, and am not sure if it's a bug/known issue/by design behaviour.

Example: I have 3 VMs running on my Server 2008 machine, each running a different variant of Windows, with applications running. Nothing is running on the host, other than the Virtual Machines at the moment. Task manager on the host reports ~2GB RAM used, whereas the guests are using at least 1GB each.

Can you clarify exactly where your RAM usage numbers are coming from?

like image 29
Jaymz Avatar answered Sep 28 '22 20:09

Jaymz