Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Where is the List<MyClass> object buffer maintained? Is it on RAM or HDD?

My question might sound a little vague. But what I want to know is where the List<> buffer is maintained.

I have a list List<MyClass> to which I am adding items from an infinite loop. But the RAM consumption of the Windows Service(inside which I am creating the List) never goes beyond 17 MB. In fact it hovers between 15-16MB even if I continue adding items to the List. I was trying to do some Load Testing of My Service and came across this thing.

Can anyone tell me whether it dumps the data to some temporary location on the machine, and picks it from there as I don't see an increase in RAM consumption.

The method which I am calling infinitely is AddMessageToList().

class MainClass
{
    List<MessageDetails> messageList = new List<MessageDetails>();
    private void AddMessageToList()
    {
        SendMessage(ApplicationName,Address, Message);
        MessageDetails obj= new MessageDetails();
        obj.ApplicationName= ApplicationName;
        obj.Address= Address;
        obj.Message= Message;            
        lock(messageList)
        {
            messageList.Add(obj);
        }
    }
}
class MessageDetails
{

    public string Message
    {
        get;
        set;
    }
    public string ApplicationName
    {
        get;
        set;
    }
    public string Address
    {
        get;
        set;
    }
}
like image 864
Ray Avatar asked Mar 24 '14 06:03

Ray


1 Answers

The answer to your question is: "In Memory".

That can mean RAM, and it can also mean the hard drive (Virtual Memory). The OS memory manager decides when to page memory to Virtual Memory, which mostly has to do with how often the memory is accessed (though I don't pretend to know Microsoft's specific algorithm).

You also asked why your memory usages isn't going up. First off, a MegaByte is a HUGE amount of memory. Unless your class is quite large, you will need a LOT of them to make a MB appear. Eventually your memory usage should go up though.

like image 56
BradleyDotNET Avatar answered Oct 13 '22 22:10

BradleyDotNET