up vote 0 down vote favorite
1
share [g+] share [fb]

I was getting out of memory errors running virtual machines in VirtualBox so I checked my commit charge and lo and behold, it's 1913 MB!

I only have 2GB physical RAM.

After closing all "applications" I have 1800 or so MB still in commit charge. That's the majority of my RAM. Opening process explorer shows no processes that seem out of order, the biggest memory hog being process explorer itself at about 26MB and everything else quite a bit smaller.

Can windows "leak" memory? Should I suspect a driver or something like the Symantec antivirus? Would their memory use even show up in process explorer somehow?

After further investigation I believe this is a VirtualBox related issue. For some reason after terminating some virtual machines, even after terminating VirtualBox, it was not freeing the memory allocated to them. For another reason I can't figure out, the task manager / process explorer cannot see the memory allocated to virtual machines in VirtualBox. It is does not show up on any process or task list. The only sign that it is happening is that the commit charge rises.

link|improve this question

feedback

2 Answers

Commit charge is basically the maximum potential pagefile usage. It is not related to the RAM.

Windows basically addresses memory into the pagefile before any applications uses it based on current pagefile usage. The commit charge doesn't reflect current memory usage, but reflects how much memory Windows is current addressing in the pagefile.

The Windows Task Manager utility, in its Performance tab, shows three counters related to commit charge:

  • Total is the amount of pagefile-backed virtual address space in use, i.e., the current commit charge. The corresponding performance counter is called "Committed Bytes".
  • Limit is the maximum possible value for Total; it is the sum of the current pagefile size plus the physical memory available for paging (this excludes RAM that is assigned to non-pageable areas). The corresponding performance counter is called "Commit Limit".
  • Peak is the highest amount that the total commit charge has reached since the computer was last rebooted.

The commit charge increases when any program is opened and used, and goes down when a program is closed. It will also change when already-running programs allocate or free private virtual memory; for example, with the VirtualAlloc and VirtualFree APIs.

The commit limit may be increased by either creating additional pagefiles or, if pagefile expansion is enabled, by expanding an existing one. The operating system will expand the pagefile automatically, if possible, when the total commit charge approaches the limit. In such an event a popup window will be displayed stating that "The system is running low on virtual memory."

Some more information is available in Windows XP's documentation.

link|improve this answer
Thanks - I was pretty much aware of what commit charge was already, but what stumps me is why it goes up to stratospheric levels when running virtual machines but never comes back down once they are terminated, leading eventually to out of memory errors. – thomasrutter Nov 19 '09 at 6:48
feedback
up vote 0 down vote accepted

Seems it is an issue with VirtualBox.

I have turned off Intel Virtualization Technology in Virtualbox as suggested in another forum and haven't had problems so far.

link|improve this answer
feedback

Your Answer

 
or
required, but never shown

Not the answer you're looking for? Browse other questions tagged or ask your own question.