Each compiled procedure executed during an OpenEdge session requires a directory entry. A compiled procedure can be a session-compiled version of a procedure or a precompiled r-code version.
When the AVM creates a session-compiled version of a procedure and there is no available space in the directory, it discards the oldest inactive compilation of a procedure. The next time the discarded procedure is run, the AVM must recompile it if it was a session compile, or reopen and reread it if it was a precompiled r-code version.
The
-D limit is a soft limit. If your application needs to exceed the limit, OpenEdge automatically increases the number of directory entries by 50 percent and dynamically allocates memory for the expanded array. (Use the
Statistics (-y) parameter to check the current directory size (
-D) value.) When the limit is reached, OpenEdge issues a
WARNING message, which is written to the current output (if there is current output) and to the log file (
LG).
You can force OpenEdge to adhere to the specified directory size (
-D) limit by starting the session with the startup parameter. When you use the
Hardlimit(-hardlimit) startup parameter, OpenEdge issues a
WARNING message when you exceed the directory size limit. It also issues a message that a resource limit was reached and raises an untrappable
STOP condition. Note that
-hardlimit also enforces the limits set by the
Local BufferSize (-l), the
MaximumMemory (-mmax), and the
Nested Blocks(-nb) startup parameters, so the
STOP condition is raised when any of the specified limits are reached.