Click here to Skip to main content
15,895,667 members
Home / Discussions / C#
   

C#

 
Questionmemory footprint of Dictionary Pin
George_George17-May-08 1:50
George_George17-May-08 1:50 
AnswerRe: memory footprint of Dictionary Pin
Guffa17-May-08 3:26
Guffa17-May-08 3:26 
GeneralRe: memory footprint of Dictionary Pin
George_George17-May-08 3:35
George_George17-May-08 3:35 
GeneralRe: memory footprint of Dictionary Pin
Guffa17-May-08 6:29
Guffa17-May-08 6:29 
GeneralRe: memory footprint of Dictionary Pin
George_George17-May-08 21:31
George_George17-May-08 21:31 
GeneralRe: memory footprint of Dictionary Pin
Guffa18-May-08 12:34
Guffa18-May-08 12:34 
GeneralRe: memory footprint of Dictionary Pin
George_George20-May-08 22:40
George_George20-May-08 22:40 
GeneralRe: memory footprint of Dictionary Pin
Guffa20-May-08 23:17
Guffa20-May-08 23:17 
George_George wrote:
4 bytes for key reference variable and 4 bytes for value reference variable on a 32-bit machine? And the total should be (8 + 8) 16 bytes for a 64-bit machine?


The structure that the dictionary uses internally to keep track of an item looks like this:
[StructLayout(LayoutKind.Sequential)]
private struct Entry {
    public int hashCode;
    public int next;
    public TKey key;
    public TValue value;
}

If the key and value are reference types, this adds up to 16 bytes on a 32-bit system.

George_George wrote:
Why "there are so much memory to reclaim that it's worth it"?


The internal array of the dictionary doesn't grow every time you add an item, intead it's size is doubled every time it grows. This means that the dictionary would have to contain at least 50% unused items before you are sure to gain anything at all by moving the items to a new dictionary.

George_George wrote:
Why "all you accomplish is more work for the garbage collector"?


Because you would just create a bunch of new objects and release a bunch of old objects, but the amount of memory used would still be the same.

Despite everything, the person most likely to be fooling you next is yourself.

GeneralRe: memory footprint of Dictionary Pin
George_George20-May-08 23:43
George_George20-May-08 23:43 
GeneralRe: memory footprint of Dictionary Pin
Guffa21-May-08 3:28
Guffa21-May-08 3:28 
GeneralRe: memory footprint of Dictionary Pin
George_George21-May-08 4:28
George_George21-May-08 4:28 
GeneralRe: memory footprint of Dictionary Pin
Guffa21-May-08 11:17
Guffa21-May-08 11:17 
GeneralRe: memory footprint of Dictionary Pin
George_George25-May-08 1:38
George_George25-May-08 1:38 
GeneralRe: memory footprint of Dictionary Pin
Guffa25-May-08 13:07
Guffa25-May-08 13:07 
GeneralRe: memory footprint of Dictionary Pin
George_George25-May-08 19:14
George_George25-May-08 19:14 
GeneralRe: memory footprint of Dictionary Pin
Guffa25-May-08 22:05
Guffa25-May-08 22:05 
GeneralRe: memory footprint of Dictionary Pin
George_George25-May-08 22:19
George_George25-May-08 22:19 
AnswerRe: memory footprint of Dictionary Pin
PIEBALDconsult17-May-08 5:50
mvePIEBALDconsult17-May-08 5:50 
GeneralRe: memory footprint of Dictionary Pin
George_George17-May-08 21:27
George_George17-May-08 21:27 
GeneralRe: memory footprint of Dictionary Pin
PIEBALDconsult18-May-08 5:01
mvePIEBALDconsult18-May-08 5:01 
GeneralRe: memory footprint of Dictionary Pin
George_George20-May-08 22:08
George_George20-May-08 22:08 
QuestionHow can I ... Pin
maresp198217-May-08 1:03
maresp198217-May-08 1:03 
AnswerRe: How can I ... Pin
Christian Graus17-May-08 1:06
protectorChristian Graus17-May-08 1:06 
GeneralRe: How can I ... Pin
maresp198217-May-08 1:50
maresp198217-May-08 1:50 
GeneralRe: How can I ... [modified] Pin
#realJSOP17-May-08 2:26
mve#realJSOP17-May-08 2:26 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.