News:

Masm32 SDK description, downloads and other helpful links
Message to All Guests

Main Menu

RAM Clear - The "Memory Optimizer"

Started by Antariy, July 14, 2012, 10:17:11 AM

Previous topic - Next topic

Antariy



RAM Clear
The "Memory Optimizer"






Program features

o The size of RAM, supported for optimization, is theoretically unlimited. But, the optimizer is still a 32 bit application and it works on any Win32 system (starting from Win95, Win98 is recommended). On a 32 bit systems with PAE support (to say - WinXP with PAE enabled on PPro or better) the optimizer supports as much memory as the OS supports. On 64 bit systems the optimizer supports entire size of memory as well.
ATTENTION: to enable support of the memory bigger than 1-1.5 GB, you have to switch the program algorithm into Advanced mode. This setting is made very simply, as well as the other settings in the program. Please read the help .TXT file provided or press [F1] key when the program interface is active.
o The optimizer has 3 agressivity levels for each algorithm, which provide flexible way to make the process of optimization more soft (less effective), normal or more hard (more effective), either.
o The program does not require installation or any other specific stuff for running - only Win32 compatible OS and the computer which will run such the OS. The only one requirement for the hardware is: the videosystem should support and work in HighColor mode (15 or 16 bits per pixel) at least, because of high-gradational color GUI interface.
o There is an indicator of the free memory size on the main program window. It consists of the progress bar and the textual indicator. The textual information is provided in the form used in the MemInfoMicro - there is no crazy unreadable or big numbers - the size is always easy to read. The size of memory for optimizing is entering in the similar but not equal manner and is easy in use as well.
When the program is minimized to tray, it shows the percentage of free RAM on its tray icon with white digits, and this info is really easy to read (contrary to very frequently encountering unreadable tray digital indicators). When you will move the cursor over the program tray icon, it will show the tip with more detailed info, similar to the textual indicator in the main window.
When the program is minimized to tray and running an optimization - it shows the progress percentage with ultramarine digits.
The program may be restored with left mouse button double-clicking on its tray icon. With clicking on the tray icon once with the right mouse button you will get the popup menu with the basical program commands.
o The program supports any true Win32 (x86/x86_64) OS and have been tested on Win95 OSR2, Win98SE, Win2000 32bit, WinXP 32bit, Win7 32bit/64bit. Usage of the program on the emulation/simulation/wrapping systems similar to Wine is not recommended and its work with them is not guaranteed.
o The optimizer has the MUI support - interface translation is made via resource DLL plugin, and the program selects the language to use on its startup, depending on the OS language settings. Currently, the following languages are supporting: English, Russian.
o The program itself requires very small system resources in the time of idle, though it has interface cute enough. Also, the optimizer has an option which allows it to require yet less system resources on the idle, when it is minimized into the tray.
o The optimizer is very simple in use - it has the functionality which, in the Author's opinion, is the truly required for the "Memory Optimizer". Also, the program's executable file has a small size.
o The program is freeware since the Author doubts anyone will buy such a weird and specialised stuff :greensml:


Technical details

As have already been stated above, the optimizer is a 32 bit program, but it actually supports for optimization the size of memory bigger than 1...2 GB - the usual maximum for 32 bit "memory optimizer" on 32 bit and 64 bit system, respectively. This limit is overcomed by using "distributed processing" - in the Advanced mode the interface you're working with is the process-father, which runs multiple processes-childrens (will name them an optimization subsystem(s) or just the subsystem(s)). Each subsystem allocates the memory buffer for "optimization" with the maximally possible size (actually - the buffer which will be agressively accessed) from the entire size requested for the optimization. For example: on x64 Win 7 there is 2 GB contiguous buffer available for the 32 bit application; if the user specifies to optimize a 6 GBs of RAM, then there will be 3 subsystems started by the synchronizing and controlling system - interface.
Theoretically, the program supports unlimited memory size - because the hardware progresses in parallel. Practically, it was successfully tested on 8 GBs RAM system, with optimizing of 6 GBs of it. Thanks to Frank (frktons) for doing the test long ago on the beta stage of program development.
Also, there was a crazy-overloaded test of the synchronization system on the alpha stage - 96 working subsytems optimizing 32 MBs each.

If anybody could test optimizer in Advanced mode with optimizing of over 8 GBs of memory on suitable computer - this is very appreciated!

The program is entirelly written in C++ (pure WinAPI) using MSVC10 compiler.


Important notes

The Author of the program knows the fact about arguability on the usefulness of the "Memory Optimizer"-class programs. So, please do not make such obvious comments here.

Many other "memory optimizers" Authors promise that their optimizers will increase the performance of the system; will unload an unused drivers; will eliminate the problems with memory leaks in the other (!) programs used on the system; will defragment the RAM; and many other, almost the same - impossible - promises and features. All these promises are not true. There is no memory optimizer which able to "unload the unused driver" reliable and/or at all - it anyway does not have the "moral rights" to do this, because this could lead system into BSOD. There is no memory optimizer which able to eliminate or, at least, decrease the memory leaks in any other programs - this can be done only by the original software developers. There is no optimizer which able to defragment the RAM - this is the thing which theoretically able to do the Windows kernel only, but practically, for relatively big memory areas (the more so - for entire memory) - this is impossible even for the kernel. Of course, for any memory optimizer this is impossible the more so, even if the Authors claims conversely. And, of course, optimizer cannot speed-up the system, cannot make old computer to run faster etc.

You can to ask, for what to use the optimizer, if so? The answer is simple: RAM Clear is the tool for using in the circumstancies where it will be useful - relatively rare, but bothering, when you do not have simple but useful tool to do the action. For instance: imagine you need to free-up some volume of the RAM for launching some memory-angry program, or you just want to swap to the page file all the memory leaks already occured in working programs, without re-launching these programs. As practical instance: you need to run a Virtual Machine, but on the host computer there is no available free RAM enough to emulate the guest (virtual) computer. In such circumstance you need to close some programs, maybe even reboot the system to get enough free memory. Or you can to try to launch VM many-many times, then, maybe, the Windows will slowly free the volume of the RAM required, and the VM will run after all. Much more simple and convenient solution in such circumstance is: use "memory optimizer". It is better to use the optimizer which does not claim that it does some really fantastic things (like elemination of the other program's memory leaks...), and does not have a billion of the features in the manner "just to be".

RAM Clear - is a simple and reliable optimizer providing the functionality which is truly required for robust "every-day-usage memory optimizer". Also, RAM Clear has a feature which do not have any other memory optimizers known by the Author: it supports theoretically (theoretically...) unlimited memory size - as much as the OS supports, and at the same time it virtually works and is equally functional on any computer from ~1997 year :biggrin:


The inarticulate   description
   of the some
   hardcore    feature       usage
and
   the
      warning


The program has the agressive Virtual Memory loading feature, which could be used for memory stress-tests purposes: for instance, to check the system and applications on the low VM condition.
This feature should be used very carefully and then and only if you're understand what are you doing and which results this could to bring, because many programs do not designed to handle low memory conditions, and they could just crash or run improperly when the test is going. Also an impression is possible that the system or programs are hang, but this is not so - just intensive disk I/O when swapping while stress-testing makes the system to slow down (temporarly hang).
Because of the unlimited memory size supported for the processing in the Advanced Algorithm Mode, this feature could be used on the systems with huge amount of the VM and the RAM.

This is really useful feature - you can test the behaviour of the programs in low memory conditions with minimal actions - just enter the size of the currently free VM, and click "Optimize" with the [Ctrl] key hold down. When you're pressing the [Ctrl] key, the free RAM indicator on the main window changes the textual information to a size of currently free VM; the progress bar still shows the percentage of the free RAM. The same implied to the tray icon tip.

Now some important notes on this feature. When you're holding down the [Ctrl] key and pressing "Optimize" button, the program is skip checking the number you've entered for being too big - you can enter any value you want. This is made intentionally - to provide the hardcore feature of memory-stressing. But, if you'll enter the size for the processing that is bigger than the size of free VM, the program will fail to allocate such amount of memory (since it will not at all be available in the system), and will show you an error message. This isn't the bug in the optimizer. Hold [Ctrl] key down, and have a look to the textual indicator - in general, it will show you the approximate size you should to enter. But there is some note again: the program may warn you that you've entered too big value for your system. You can confirm continuation, and the program could run properly, but as well it is possible it will not run and will fail as if you've entered knowlingly big value. You should decrease the size entered by couple of units and try again, until the program will continue processing without error messages (it may warn you still about your request for processing on the edge of the system resources, though).

All these notes should not scare you, and should not make you to think that the program is "weird buggy stuff". Just this feature (memory-stressing) is the field really lying on the same edge of the system resources, and there is no common running plan - you should sort it out: which parameters are suitable for your particular system.
Also, please remember that the RAM Clear is the user-mode program as well, and when it doing optimization, it is running in the same agressive, extremal low memory conditions. It seems to be pretty stable, but the Author cannot guarantee that it will not fail on every existing computer hardware and software configuration. Some program interface flaws are possible when doing stress-testing, like missed text labels on the buttons etc.

You can always stop the optimization by clicking the "Abort" button (it was "Optimize" button), by closing the program's window with a title button or just by clicking the [Esc] - all optimizing subsystems will fast terminate. Or you may just not use the memory stress-testing feature if you don't have the need in it.


This is the project just for fun in the most part. So, any constructive comments will be accepted, any criticism will be ignored :lol:


P.S. many thanks to Dave (dedndave), who fearlessly tried to check the documentation for a proper grammar. @Dave: even do not try to decline this statement :P Your help anyway was very instructive :t

Gunther

Alex,

at the first glance: it seems to be a solid piece of software. Well done! Where is the source?

Gunther
You have to know the facts before you can distort them.

Antariy

Quote from: Gunther on July 14, 2012, 10:33:33 AM
at the first glance: it seems to be a solid piece of software. Well done!

Thanks, Gunther! :biggrin:

Quote from: Gunther on July 14, 2012, 10:33:33 AM
Where is the source?

Oh, well, the subsystem's synchronization algorithm is entangled because of the need to check many things and conditions etc. etc., and the source is just a bunch of the entangled "spaghetty"-like style code, which actually should be rewritten completely :greensml: :biggrin: (Am I joking? :lol:)
But I have described the main program idea and algorithm in the thread - it is the most important stuff.

Gunther

Quote from: Antariy on July 14, 2012, 10:48:16 AM
But I have described the main program idea and algorithm in the thread - it is the most important stuff.

Okay Alex. I'll study the explanation and the documentation inside the archive.

Gunther
You have to know the facts before you can distort them.

dedndave


hutch--

Something you used to do in Win95/98 was clear out memory so your system did not crash. The memory management in Win9x was poor along side the NT and later versions. The trick was to allocate memory in set block sizes until the allocation failed, then free all of the allocated memory and check how much free memory you had. It saved rebooting with Win9x but it barely matters in later versions as the memory management is far better.

Antariy

#6
Quote from: dedndave on July 14, 2012, 12:59:53 PM
very nice project, Alex   :t

Thanks, Dave! :biggrin:

Antariy

Quote from: hutch-- on July 14, 2012, 01:04:17 PM
Something you used to do in Win95/98 was clear out memory so your system did not crash. The memory management in Win9x was poor along side the NT and later versions. The trick was to allocate memory in set block sizes until the allocation failed, then free all of the allocated memory and check how much free memory you had. It saved rebooting with Win9x but it barely matters in later versions as the memory management is far better.

Yes, but I still use it frequently, for instance - the example with a VM launching is a real, as well as I use it with some  memory-angry programs with the memory leaks (to swap them out fast). Also it may be surprising - to run the memory-stressing test and to see how much of the solid programs are not at all designed to handle low memory conditions properly :greensml:

jj2007

Quote from: Antariy on July 14, 2012, 01:15:35 PM...run the memory-stressing test and to see how much of the solid programs are not at all designed to handle low memory conditions properly :greensml:

Can you "name and shame" some?  ;)

Looks like a solid and handy proggie, Alex - congrats :t

Antariy

Quote from: jj2007 on July 14, 2012, 04:52:12 PM
Can you "name and shame" some?  ;)

I'm a polite person with respect to the rules :biggrin:

Mr Hippy

When Windows is asked by software programs to allocate memory, Windows already calculates the regions and alignment boundaries. Does it not? This would make RAM optimizing programs the least bit of useless?

It is a nice layout. Congratulations!

Antariy

#11
Quote from: Mr Hippy on July 16, 2012, 03:02:38 AM
When Windows is asked by software programs to allocate memory, Windows already calculates the regions and alignment boundaries. Does it not? This would make RAM optimizing programs the least bit of useless?

First, please refer to the Important notes section.
It's too long stuff to describe here, but in short: all such "memory optimizers" doing their job via not just memory allocating, but also using aggressive memory access - it could be read or write loop(s) through entire block allocated. In short, this causes Windows to swap out/uncommit other programs' data/code from the RAM into the paging file on the disk.

As for RAM optimizing - literally - does RAM Clear make computer to run faster? No, it doesn't, and this have been stated in the section I reffered above.
Does RAM Clear free RAM (physical memory) to use it further for any purpose user wants? Yes, it does.
Does RAM Clear support theoretically unlimited amout of memory to free? Yes, it does, at least it overcome 1,5 GB memory limit for 32 bit "memory optimizer".
Does RAM Clear have memory-stressing feature which, when running, causing the system almost to hang and to operate in the aggressive testing environment? Yes, it does.
These 3 features were the aim of this program, and it does them, all other popular beliefs about the "memory optimizers" are just a fables which were made by "memory optimizers" developers to raise their selling counter :greensml: Though, we can not deny the fact that some optimizers contain a bunch of features, and the only thing they aren't doing is a coffee preparation :lol:


Quote from: Mr Hippy on July 16, 2012, 03:02:38 AM
It is a nice layout. Congratulations!

Thank you, Mr Hippy! :biggrin:

frktons

Well done Alex, after a couple of years it should be
mature enough to be used, when needed.

Frank
There are only two days a year when you can't do anything: one is called yesterday, the other is called tomorrow, so today is the right day to love, believe, do and, above all, live.

Dalai Lama

Farabi

Whoa alex, youre a great coder, this is cool.
http://farabidatacenter.url.ph/MySoftware/
My 3D Game Engine Demo.

Contact me at Whatsapp: 6283818314165

Magnum

Alex,

Have you considered posting your info on groups such as alt.comp.freeware?

I would consider it good info and a lot of people read those kind of groups.

Andy
Take care,
                   Andy

Ubuntu-mate-18.04-desktop-amd64

http://www.goodnewsnetwork.org