[Back to FAQ SWAG index]  [Back to Main SWAG index]  [Original]

> Can anyone help me in determining how much stack, and heap memory
> you need to give a TSR, does it depend on how many variables or how
> long your code is?

Your three requirements are based on the following:

Stack Space
-----------
This is based on how deep your procedure nesting goes, whether your
procedures are recursive and how much they'll recurse, how large the
Parameters to those procedures are, and size of local variables. Keep in
mind that you only have to cover the largest/deepest combo of everything
to be safe, not the total. TO be safe you should leave a little extra
for interrupts and stuff to use ($100 or so)
I use $2000 for most programs, and $400 for my TSR's, which will hardly
ever use that much. $400 is the minimum you can declare.
If you do alot of recursion or put huge things on the stack, use more.
Actually, use the smallest number you can get away with without an error
while stack checking is enabled.

Minimum Heap
------------
This is the LEAST heap space your program can run with. Your program
ABSOLUTELY HAS to have at least this much heap space when it's run.

You use heap space when you declare variables with New or getMem (like
with Turbo Vision or other objects)

So if you don't use any dynamic variables, you can pretty safely set
this to 0. Otherwise, set it to a reasonable number for your
application. (I mean if your database program only has memory for ONE
record, what use is it for it to run?)

Maximum Heap
------------
This is the most heap space your program WILL reserve, even if more is
available. This needs to be large enough to hold all the dynamic
variables you plan on allocating, plus a little...

Problem with reserving it ALL is that you can no longer spawn child
processes with exec. So this needs to be small enough to let other
processes you plan on running (dos shells) run, yet large enough so you
don't run out of memory easily...

This is the toughest one to set.

In programs that don't use the heap, set it to 0.

in programs that will never ever call a child process with Exec, set it
to 655360 ($100000, or all available memory)

otherwise, your guess is as good as mine...

I have my default set at 65536. ($10000)


[Back to FAQ SWAG index]  [Back to Main SWAG index]  [Original]