CleanMem By PcWinTech.com

Works on Windows 2000, XP, 2003, Vista, 2008, 7 - 32bit & 64bit

v2.0.3
Fix system up time monitor bug. The mini monitor showed the system up time via the GetTickCount API. But this had a problem, it could only go as high as 49 days. I have since changed the code to pull the system up time from the performance monitor in Windows. Now there should be no limit.

v2.0.2
Added "Reset Window Positions" option to context menu.
Multiple GUI tweaks and fixes.
Fixed minor bug where the mini monitor wouldn't hold its startup position in some cases.
Program now remembers the screen position of the settings windows and others. The reset mini monitor position will also reset these windows as well.
Window positions are now saved under the Current User Reg keys. This has multiple benefits. If a person runs the mini monitor from a thumb drive and on multiple computers, the position will be saved on each computer instead of the ini file. This also lets different users on the same system have the monitor in different positions than the other users.
Fixed bug where the Page File information on the Memory Info Window didn't detect on Windows 7.
Page file info on the memory info window has been updated to pull better information. Such as actual current usage of the page file on the disk.
Fixed bug where the mini monitor didn't always exit & close.

v2.0.1
Fixed rare crashes on some systems when trying to exit the mini monitor or open its menu.
Added minimize button to the settings windows.

v2.0.0
Changed the default task scheduler run time for CleanMem from 30 min to 15 min.
Fixed the 256 char limit for the setting file. The limit is now 4096 chars.
Performance enhancement to CleanMem.exe. It will now only load the lists if that list is enabled. Before it loaded them every time.
Changed the API used to pull system stats.
The page file info shown in Windows XP and 2003 task manager is actually Commit Total. To stay with proper naming I have changed the name in the program from page file to Commit Total.
The mini monitor would format the numbers down to 3 decimal points. Example: 1.999 GB. Due to the new info the mini monitor can show in the text fields I have lowered it to 2 decimal points. Example: 1.99 GB. This is to better fit the new information in the amount of available space. This will also round the numbers, so 1.999 will become 2.00.
Changed the default bar fill graphic.
Changed some of the default settings for the mini monitor. Such as bar fill text color and show border. These of course are still changeable by the user.
The right click menu that is on the system tray icon is now accessible from the main settings window as well.
Removed Clean Memory button from the mini monitor. Users can right click on the mini monitor for the clean memory option. With the button gone users can now set the position of the text on the monitor. Left, Center, Right
Added a online help file link to the menu. This will go to the guide on how to use CleanMem and the Mini Monitor.
When you first install CleanMem you no longer have to reboot before the task scheduler will start running CleanMem.
On Windows Vista & 7 when the UAC is enabled the tray icon would not show if explorer.exe was restarted. This has now been fixed.

New Free features:
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Allow to hide text in mini monitor bar
Have a reset mini monitor position button 
Add randomize colors button for mini monitor 
Add color presets for the mini monitor 
Show system up time in the mini monitor settings window. 
Users can set to have the mini monitors corners rounded or not. 
Users can now set the text alignment for the 2 text fields on the mini monitor. Left, Center & Right. 
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

New Pro features:
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Advanced Monitor Rules: (The user can set these rules for any process they like (Not on protected processes of course)).
Clean the memory on a specific process when it hits a user set memory level. (Example: Firefox hits 150MB) The mini monitor cleans the memory instead of calling CleanMem. One less program to run :-)
Kill a program if it hits a certain amount of memory.
Auto set process priority on a process.

Auto clean the system file cache when it reaches a set size.
Set how often the advanced monitor rules will run.
Auto run CleanMem when system hits a user specified % of memory used.
Great details on running processes.
Allow users to choose a picture (jpg, bmp, gif) for the mini monitor bar.
Allow user to choose what text shows on the mini monitor Example: Total memory, used memory, free memory, page file commit, file cache size, system uptime and more.
Show current file cache info.
Show extended memory usage stats.
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

v1.7.0
Major update. Make sure to uninstall any old versions of CleanMem first.
CleanMem is now 3.5x faster. CleanMem use to take 3.5 sec to do its job and close. It now takes 1 sec.
Update to the mini monitor to show actual percentage of memory use. This shows up in the tooltip text of the system tray icon. Since the tray icon can only fit 2 chars the percentage is rounded. But in the tooltip it will show the current. Example: 35.635%
The system tray icon only changes when the percentage changes. When a user would update the colors of the try icon the change wouldn't happen till then. Now when a user changes anything for the system tray icon it will update immediately.
The system tray icon didn't render properly if your system was set to less than True Color (32 bit) This has now been fixed.
Added global hotkey support to the mini monitor. The user can now set what keys to hit to run CleanMem.
Added a GUI for the settings of CleanMem. CleanMem now stores all settings in one ini file instead of multiple text files.
Minor tweaks and fine tuning to the mini monitor.
CleanMem setup now auto detects if a system is 32 or 64 bit and selects the correct install option during setup.
CleanMem setup support silent installs.

v1.6.5
Fixed bug where text in the system tray icon wasn't center if the user had a higher DPI set. Thanks goes to this user for bringing this bug to my attention http://forums.pcwintech.com/index.php/topic,1642.0.html

v1.6.4
New features per user request. I have removed all 101 static tray icons from the program. The user can now set the colors and font for the tray icon to their liking :-)
Small performance improvement, instead of the tray icon updating every 1 sec it only updates when it needs to.

v1.6.3
The total processes on the mini monitor just wasn't cutting it. First the API would cause 1,100 page faults per sec. Then I switched it to use WMI to pull the process count. This lowered the page faults to 14. But turned out it also caused the WMI service to be at 1 - 2% all the time. This just wont do! The point of a monitor is to do its job without taking anything from the system.
I have dropped total processes from the monitor and replaced it with current page file usage. The monitor now has 0 page faults and 0 cpu :-)
I has also added a few more features. You can now hide the totals and button on the monitor, making it even smaller by only showing the bar.
You can now right click anywhere on the mini monitor to pull up the menu. This is useful if you hide the Clean Memory button and still want to run it.

v1.6.2
Fixed a bug where the colors where not being set at startup of the mini monitor.
When using the bar fill picture the text would stay black. Per user request the text will now match the bar fill text color.

v1.6.1
Code improvement on the mini monitor. The code to pull the number of running processes was causing a high amount of page faults. While page faults do not hurt the system http://en.wikipedia.org/wiki/Page_fault
It still bugged me that the Windows API used to get the process count was causing 1100 page faults every time it ran, which was every 1 sec. I have since used a different api and code and dropped the page faults down to 14 instead of 1100 :-)
Big thanks to this user http://forums.pcwintech.com/index.php/topic,1605.0.html who brought this to my attention.

v1.6.0
Added a new CleanMem Mini Monitor. This runs separate from CleanMem. The mini monitor allows a user to keep an eye on current memory usage and clean the system memory with one click of a button. The program calls CleanMem to do its job. This new mini monitor is an addition to CleanMem, not a replacement. CleanMem still installs and runs in the back ground via the task scheduler just as it always has.

v1.5.1
Updated the log file output per user request. http://forums.pcwintech.com/index.php/topic,1350.0.html
Removed the VB6 SP6 runtime files from the setup file. These files are no longer needed on newer systems and will help reduce the setup size.

v1.5.0
I have added a new logging feature. By default this is turned off.
You can now have CleanMem log the memory usage of a process before CleanMem cleans it and after to see how a process is doing.
Check the cleanmem_log_settings.txt for more details.

v1.4.2
small bug fix where the only list wasn't working.

v1.4.1
Added the option to disable the new clear file cache in the ignore list.
You can disable the clear file cache feature I added in v1.4.0
Simply add file cache to the ignore list
example:
file cache

v1.4.0 Cleanmem now also clears the file cache of the system. The same way CacheSet does ( http://technet.microsoft.com/en-us/sysinternals/bb897561.aspx )
I made this update after I noticed some things on my system. Every time I played a heavy game or did a full drive backup my system would be a total snail afterwards.
I checked the memory usage, cpu and everything, nothing was being used up. But every time I even so much as tried to open a window it would crawl and I would see my hard drive light fully light up for a good 5+ sec.
So I new the problem had to be with the hard drive in some way. After doing a ton of research I came across cacheSet. When I used it I had seen my cache was over a few hundred MB's!
As soon as I cleared it the system came back and the sluggish feel was gone. After researching why this happens it turns out when the cache becomes to full or large the hard drive is used MUCH more than normal, thus why everything was slowing down and my hard drive was working over time.
The file cache is stored into memory, so when it doesn't clear itself that's also wasted memory. so when it is cleared that memory comes back to the system as well.
So with this update no more sluggish system after heavy file transfers and gaming :-)

v1.3.0 Added a only list to give the user more control, if a person wishes to have Cleanmem only clean certain processes all they have to do is add them to the list. If the list is blank Cleanmem will clean all processes, of course skipping ones in the ignore list.

v1.2.1 Update Notes: I have updated the program setup to make the scheduled tasks better. On some machines they weren't running and required the user to simply reset the settings for it to work. Hopefully this is now taken care of.

V1.2 Update Notes: Per user request I have added an ignore list that users can edit. This ignore list will tell cleanmem to skip any process that is listed in the list. The user who requested this wishes to run cleanmem on all their servers but they have a process they don't like touched, by anything. So to make them feel better and at ease I have added this option in. - ShaneV1.1 Update Notes: I removed the program from running as a service which will stop the event viewer errors and also I redid the code making it more efficient and about half the size.

---------------------------------------------------------------------------------------------------------------------------
About CleanMem

Short Version:
CleanMem keeps memory use in check on the system without the memory being pushed to the page file. This in turn keeps the system running smoother.

Long Version:
The people who will notice the biggest performance increase are ones who don't have a lot of memory installed. (More memory is always better!)
The reason is when your system starts getting low on memory Windows will start to move memory to the page file. The page file is ran off your hard drive. The hard drive is the bottle neck of performance on a system. So the slower the drive the slower the system goes as it tries to work with the page file. When you use CleanMem you help keep the system from using up all its memory. In turn Windows doesn't push anything to the page file, and we avoid the huge slow down from page file usage.

What if you have tons of memory? Should you still use CleanMem?
I have 8gb's of memory and I use Windows 7 64bit. I never hit the max memory usage. But I still use CleanMem to keep the programs memory usage in check. Why?
Think of it this way. Say you have a ton of hard drive space. Would you want your drive full of unneeded files? To the point where your drive is nearly full? Sure I have the space, but why would I want all that crap?
The same goes for my memory. I want to make sure the memory is being used in the best way it can. I don't want memory leaks and such using up all the memory. Lots of people feel the memory is a resource and should be used as much as possible. I agree, I just don't want the left over trash is all :-)

So how does CleanMem work?
CleanMem Works buy calling a Windows API. CleanMem doesn't change the working set of a processes. It simply asks Windows to do all the work. So Windows does the trimming, the moving and manages everything. This is why there is never any crashes of programs and any performance hit to the system. To put it short CleanMem doesn't work against the Windows memory manager, it works with it :-)

Some facts about CleanMem (PLEASE READ):
1. CleanMem doesn't work magic on your system. The best thing you could do is get more memory for your system! The goal of CleanMem is to help keep windows from needing to rely heavily on the page file. Which is located on your hard drive.

2. You will NOT notice a night & day performance increase. The users who get the best performance out of CleanMem are the users who don't have a lot of memory. I know others would yell at them and say "well just buy more memory!" Well not everyone can run out and buy memory. CleanMem will help them until they do.

3. CleanMem is snake oil! Snake oil I say!...Not. So far the only people calling CleanMem snake oil are the users who don't bother trying it. I have one "memory expert" after another tell me one thing and say the other memory people are wrong! Its a war I don't want to fight and that no one will win. The true memory experts are the programmers of Windows, the programmers! And lets face it, they are not going to find their way to my corner of the web :-)

4. CleanMem WILL NOT make your system faster. What CleanMem does, again, is help avoid the use of the page file on the hard drive, which is where your slow down comes from. There have been users including my self who have noticed a smoother system. A placebo effect perhaps? Who knows. I do know that CleanMem hurts nothing, and does help, to a point.

5. CleanMem does help with programs that have memory leaks. The memory is pushed to the system cache, not the page file. The system cache is still in memory. And a program can call back what it needs instantly. This is why there is never a hiccup in heavy 3D games as CleanMem runs. The memory that is not reclaimed is freed and allowed to be taken over after a certain amount of time. The system cache is not a bad thing! and is far better than the page file. Mainly because it has the GB speeds in memory than the MB speeds of the hard drive.
(Warning: Memory Terminology in Windows is completely screwed. System Cache could mean something else, perhaps Memory Cache is better? as proof of this confusing way the memory has been labeled in windows, in Windows XP the PF usage in the task manager is actually commit charge, not page file usage)

Since the goal is less hard drive usage you can see here how the standby list (or system cache) gives us what we are looking for.
http://download.microsoft.com/download/7/E/7/7E7662CF-CBEA-470B-A97E-CE7CE0D98DC2/MemorySizingGuidanceWin7.docx

"Standby List
The Standby list contains unmodified pages that have been removed from process working sets, which effectively makes the Standby list a cache. If a process needs a page that is on the Standby list, the memory manager immediately returns the page to its working set.
All pages on the Standby list are available for memory allocation requests. If a process requests memory, the memory manager can take a page from the Standby list, initialize it, and allocate it to the calling process. This is called repurposing a page.
Pages on the Standby list are often from recently used files. By keeping these pages on the Standby list, the memory manager reduces the need to read information from the disk. Disk reads can decrease system responsiveness."

The standby list is far better to use than the page file. Why? Speed!
A hard drive goes on avg. 50 to 75MB/s where memory is over 100x that.
http://www.tomshardware.com/reviews/ram-speed-tests,1807-3.html

So how does moving memory to the standby even help?
Take a process say, Firefox.exe
[50MB currently in use memory] - [25MB Unused, but still claimed by Firefox] = total memory 75MB

When the memory is moved to standby Firefox claims the 50mb back instantly, where the other 25mb isn't, so that memory will be free to the rest of the system.

As proof stop CleanMem from running, let Firefox grow large in memory usage. Then run CleanMem. You will see Firefox drop, then grow back up, but not to the large size it was.

This is how CleanMem uses the Windows memory manager to its advantage. Now by having that extra memory free to the system, Windows has no need to go running to the page file, which is ran off your drive and is where the slow down comes from.

That's why people who had high page file usage before CleanMem notice the biggest improvements after using CleanMem.


6. CleanMem is FREE and is there for users who want it. Don't know if it will work or help? Try it! Don't take the word from others who don't bother trying it. If it doesn't help, or doesn't work then uninstall it, no harm done :-)

7. The CleanMem Mini Monitor uses the GlobalMemoryStatusEx API to pull memory and page file commit usage.
http://msdn.microsoft.com/en-us/library/aa366589%28v=vs.85%29.aspx
 

I think I should also clarify, I am no memory expert.

I am a tech who made a program to help my users.

I did the research, made the program, then tested the crap out of it.
So my backing and defending of my CleanMem program comes from the results I have seen with my own eyes. And what a lot of other users have seen as well. :-)

-Shane