<p>Virtual memory from a computer size perspective is  </p>

<blockquote>
  <p>[a way to make the program] think it
  has a large range of contiguous
  addresses; but in reality the parts it
  is currently using are scattered
  around RAM, and the inactive parts are
  saved in a disk file. (<a href="http://en.wikipedia.org/wiki/Virtual_memory" rel="noreferrer">Wikipedia</a>)</p>
</blockquote>

<p>I would interpret VM Size in the Windows Task manager as either the total addressable virtual memory space or the amount of memory the process is currently using in the virtual memory space. </p>

<p>But in the Task Manager the WM Size is in many cases less than Mem Usage, which should be amount of RAM the process is using. Therefor I guess that WM Size means something else?</p>

[{'answer_id': 27411, 'author': 'Derek Swingley', 'author_id': 1934, 'author_profile': 'https://Stackoverflow.com/users/1934', 'pm_score': -1, 'selected': False, 'text': '<p>How about a coding horror post to answer this:  <a href="http://www.codinghorror.com/blog/archives/000393.html" rel="nofollow noreferrer">http://www.codinghorror.com/blog/archives/000393.html</a></p>\n\n<p>"VM Size:  How much of the processes\' less frequently used memory has been paged to disk."</p>\n'}, {'answer_id': 27426, 'author': 'T Percival', 'author_id': 954, 'author_profile': 'https://Stackoverflow.com/users/954', 'pm_score': 1, 'selected': False, 'text': "<p>The amount of memory mapped into that process' address space. This can include shared memory mappings.</p>\n\n<p>In a process there will be sections of the memory space for each shared object (DLL) that is part of it, as well as some memory for stack, and areas allocated by the process itself.</p>\n\n<p>For example looking at the memory map of a <code>cat</code> command on my system I can see its memory mappings. In this case I use <code>cat /proc/self/maps</code> to investigate the cat process itself. Mapped into its virtual memory is the binary itself, some heap, locale information, libc (with various permission flags), ld.so (the dynamic linker), stack, vdso and vsyscall sections and some anonymous mappings (mapped pages with no backing file).</p>\n\n<pre><code>00400000-00408000         r-xp      /bin/cat\n00607000-00608000         rw-p      /bin/cat\n008ac000-008cd000         rw-p      [heap]\n7fbd54175000-7fbd543cf000 r--p      /usr/lib/locale/locale-archive\n7fbd543cf000-7fbd54519000 r-xp      /lib/libc-2.7.so\n7fbd54519000-7fbd54718000 ---p      /lib/libc-2.7.so\n7fbd54718000-7fbd5471b000 r--p      /lib/libc-2.7.so\n7fbd5471b000-7fbd5471d000 rw-p      /lib/libc-2.7.so\n7fbd5471d000-7fbd54722000 rw-p\n7fbd54722000-7fbd5473e000 r-xp      /lib/ld-2.7.so\n7fbd5491d000-7fbd5491f000 rw-p \n7fbd5493a000-7fbd5493d000 rw-p\n7fbd5493d000-7fbd5493f000 rw-p      /lib/ld-2.7.so\n7fff5c929000-7fff5c93e000 rw-p      [stack]\n7fff5c9fe000-7fff5c9ff000 r-xp      [vdso]\nffffffffff600000-ffffffffff601000 r-xp    [vsyscall]\n</code></pre>\n\n<p>For each mapping, subtract the start address from the end address to determine its size, for example the <code>[stack]</code> line: <code>0x7fff5c9ff000 - 0x7fff5c9fe000 = 0x1000</code>. In decimal, 4096 bytes - a 4 kiB stack.</p>\n\n<p>If you add up all these figures, you'll get the process' virtual memory (VM) size.</p>\n\n<p>VM size is not a reliable way to determine how much memory a process is using. For instance there will only be one copy of each of the read-only <code>/lib/libc-2.7.so</code> maps in physical memory, regardless of how many processes use it.</p>\n"}, {'answer_id': 27543, 'author': 'Simon Kim', 'author_id': 2370764, 'author_profile': 'https://Stackoverflow.com/users/2370764', 'pm_score': 1, 'selected': False, 'text': "<p>What's the correct answer about VM Size?</p>\n\n<ul>\n<li><p>In Coding Horror</p>\n\n<blockquote>\n  <p>How much of the processes' less frequently used memory has been paged to disk. </p>\n</blockquote></li>\n<li><p>In Comment of Coding Horror</p>\n\n<blockquote>\n  <p>You're wrong on VM Size. It's the total of all private (not shared) bytes allocated by this process, whether currently in physical memory or not. It's a better value for tracking whether you have a memory leak than 'Mem Usage'. The same value is available in Performance Monitor as 'Process: Private Bytes'.</p>\n</blockquote></li>\n<li><p>In MSDN</p>\n\n<blockquote>\n  <p>Virtual Memory Size : \n  The amount of virtual memory, or address space, committed to a process. </p>\n</blockquote></li>\n</ul>\n\n<p>I am confusing what is corrent.</p>\n"}, {'answer_id': 114673, 'author': 'Suma', 'author_id': 16673, 'author_profile': 'https://Stackoverflow.com/users/16673', 'pm_score': 3, 'selected': False, 'text': '<p>It\'s the total of all private (not shared) bytes allocated by this process, whether currently in physical memory or not.</p>\n\n<p>See also <a href="http://shsc.info/WindowsMemoryManagement" rel="noreferrer">An introductory guide to Windows Memory Management</a> or <a href="http://en.wikipedia.org/wiki/Commit_charge" rel="noreferrer">Commit Charge Wikipedia article</a></p>\n\n<p>For a developer watching process state like this I would recommend to install <a href="http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx" rel="noreferrer">SysInternals Process Explorer</a> and to use it instead of the default Task Manager. This value is called "Private Bytes" in it.</p>\n'}, {'answer_id': 3765184, 'author': 'Lewis', 'author_id': 454511, 'author_profile': 'https://Stackoverflow.com/users/454511', 'pm_score': -1, 'selected': False, 'text': "<p>I can't see VM size in the Windows task manager, Whatup Gold has a VM size in its task manager - do you mean that? in this case i beleive it relates to the total amount available to the VM</p>\n"}]
['https://Stackoverflow.com/questions/27407', 'https://Stackoverflow.com', 'https://Stackoverflow.com/users/1918/']