Private storage usage
The single most common class of failures after a successful installation of the SDK are those related to insufficient private storage.
As discussed in detail in Understanding Memory Usage, LE provides storage from Subpool 2, key 8 for C/C++ programs like the JVM that use C runtime library calls like malloc() to obtain memory. The LE HEAP refers to the areas obtained for all C/C++ programs that run in a process address space and request storage.
This area is used for the allocation of the Java™ heap where instances of Java objects are allocated and managed by Garbage Collection. The area is used also for any underlying allocations that the JVM makes during operations. For example, the JIT compiler obtains work areas for compilation of methods and to store compiled code.
Because the JVM must preallocate the maximum Java heap size
so that it is contiguous, the total private area requirement is that of the maximum Java heap size that is set by the -Xmx option plus an allowance for underlying
allocations. (You can use the java -verbose:sizes -version
command to show the
values of various options, including the -Xmx option, that are in use.) A total
private area of 140 MB is a reasonable requirement for an instance of a JVM that has a maximum heap
size of 64 MB.
If the private area is restricted by either a system parameter or user exit, failures to obtain private storage occur. These failures show as OutOfMemoryErrors or Exceptions, failures to load libraries, or failures to complete subcomponent initialization during startup.