RamMap empties Standby Lists but doesn't free them
Emily Wong
My problem is: when I use RamMap to empty some standby memory, it gets emptied and zeroed, but the freed memory isn't added to the Free memory counter afterwards. Instead, it keeps contributing to the occupied percent of RAM as unused.
Here you have a screenshot to illustrate my problem. This image was taken right after an "Empty Standby lists" order.
I've already suffered this unused memory phenomenon due to some memory leaks with Razer Synapse, and AFAIK it won't be available to other processes tough it claims itself to be unused. How would you make this freed memory completely available to other processes?
41 Answer
Everything looks good.
There are 2 free memory lists. There are the Free and Free Zero lists. When memory first becomes free it goes to the Free list but this is only temporary. The kernel has a low priority thread that zeroes free memory and then places it on the Free Zero List. Typically there will be very little memory on the Free List.
Memory is zeroed for security reasons. Processes cannot be allowed to see memory that had previously used by another process until it is first cleared. Free Zero memory is thus immediately available for assignment to any process for any purpose. Memory on the Free list can only be immediately used for code blocks which will be overwritten before a process can see it. If memory on the Free list must be used the kernel will first have to zero it and that takes time.
1