You are on page 1of 8

CleanMem By PcWinTech.

com

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

v2.5.0
Multiple code changes and improvments.

v2.4.3
Small bug fixes to the gui of the mini monitor.

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

You might also like