Contributor: SWAG SUPPORT TEAM > 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)