[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Memory leaks



History
I have been running a multi-user system based on the Micro-RTX Kernel
since 1981. I have written a test program that dumps all system 
information regarding all processes. This includes program locations in
memory,"data, bss, and text size" lists memory control blocks with size
of each chunk, and much more. I compile programs to allocate the same
magic figure for memory alloction, 256000 bytes. The idea was when a 
program was unloaded, a new program would be loaded into the same 
segment for memory which I had just released. This is not the case, as 
the micro rtx kernal always seemed to leave 64 byes still allocated to
something.

Since I am converting to the mint opertating system, I was curious how
memory allocation compared. I find that there is 448 bytes lost each 
time I load and unload a program in a multiuser environment. This leads
to fragmentation of memory. A small test of loading and unloading the 
same program from the same terminal 3 times resulted in going from 9
free blocks of memory to 13 free blocks, with a loss of 1344 bytes
available, 448 per iteration.

Why is all the memory not released. I release memory via gemdos(76)Pterm
which is documented as releasing all memory control blocks. Am I missing
something. I have been trying to build a clean, orderly system, where
processes can be allocated memory, without fragmenting the memory every
time programs are changed. As my system runs for 12 hours per day and 
processes inventory reciepts, invoicing, A/R, ordering, programs are
changed quite frequently.
Is this a pipe dream, or is it a problem.

Any sugestions would be appreciated.
Brent