CleanMem By PcWinTech.com

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

v2.4.2
Cleaning of the File Cache is now disabled by default. There are times where cleaning it helps improve performance and sometimes it doesn't depending what the system is doing at the time. So best to let the user decide to have it enabled.
Added a new menu option to the mini monitor to manually clean the file cache. This new option is part of the free and pro versions :-)
CleanMem and all of its exe's are now terminal services aware.

v2.4.1
Bug fix. When you had more than one mini monitor running on the machine you would get an error that the port was in use. This is because the other mini monitor was using it. I have fixed it so this error doesn't pop up :-)

v2.4.0
Added a new remote feature. This feature is for pro versions. You can now view the memory and stats from the mini monitor remotely. You can also run CleanMem from the remote viewer. Of course the mini monitor must be running on the remote machine to pull the stats. This works both on local networks and over the internet. You will need to setup a port forwarding rule in your router to view over the internet. Port forwarding guides and help are on PcWinTech.com
Added a new screen saver that will pull the data from the mini monitor and display it on the screen saver. This is for both free and pro versions. The mini monitor will allow pulling of stats from both the free and pro versions on the local host 127.0.0.1. The free version will only pull the stats available in the free version.
Added a remote viewer program as well. You can use this to view the mini monitor remotely.
I have included the source code for both the screen saver and the remote viewer, both in visual basic 6. This way others can build more and better screen savers and remote viewers for the mini monitor. Please let me know if you build one and I will link to it on my site.
Per user request I have added a global hotkey to reapply the on top setting. This is for when another program calls the windows api to take the top most order (Puts the window on top of all others) Now a person can use a hot key to put the mini monitor back on top without having to go back into the settings and turn it off and back on.

v2.3.2
Per user request I have added a "Pause Advanced Monitor" option to the right click menu of the tray icon in the mini monitor. When you click it, it will pause any of the advanced monitors that are enabled and it will change the text in the tray icon to "||" to show it is paused. This setting isn't saved so if you restart the mini monitor for any reason it will run as normal.

v2.3.1
New button control code, the old code for the buttons caused the program to crash on some machines.
Code tweaks and improvements.

v2.3.0
Added a new check for new version feature.
Lots of GUI changes, should make the program more stable.
Code tweaks.

v2.2.0
Added better support for the window positions of the program. On some users systems, if they had another program running that worked with program windows, it would cause CleanMem to save the window positions off screen, or if a user lowered their screen resolution and the old position would now be off screen. The program now checks the current screen resolution and brings the windows back on screen. I made sure this supports people with multiple monitors :-)
Fixed a few small bugs.
Added some control dll's to have CleanMem use instead of the ones on the users systems. On a few rare systems, if the users theme controls had the wrong or mismatched versions then CleanMem or their computer would crash. I have put the correct files with CleanMem and it will use those now instead. I am hoping this will fix the crash problems for those few people.

v2.1.1
Minor bug fixes.

v2.1.0
(All changes in this version are for both Free & Pro versions.)
Moved system up time from the bottom of the window to the top menu. There a user can now decide how the program will pull the system up time. Default is GetTickCount API (49 Days Max) the other is by the Windows Performance Counters (No Max). The reason for the 2 options is for users who have disabled their performance counters and do not wish to turn them back on.
GetTickCount counts since system boot and includes suspends/hibernation time as well, but has the limit of going up to 49 days.
The performance counter only counts as windows is running and doesn't during suspends/hibernation, but doesn't have the 49 day limit.
Added new option to disable the bar fill graphic. This is for the users who want the monitor to be just pure text. Such as when using blending mode into the desktop.
Added new compact mode for the mini monitor. This will hide the text and the make the bar 50% smaller. Making a very nice small monitor that stays out of the way.
Add some pre made compact bar graphics to the setup.
Added new mini monitor start with windows options. You can now set the mini monitor to run at system startup for the current user or all users.

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