If you encounter a Java
OutOfMemoryError, you can try executing your program again by restarting
SAS and specifying a larger amount of memory for Java at SAS invocation.
To determine what the
current Java memory settings are, you can submit a PROC OPTIONS statement
that shows the value of the JREOPTIONS option:
proc options option=jreoptions;
run;
After you submit this
procedure code, a list of JREOPTIONS settings is displayed in the
SAS log. The JREOPTIONS option has many suboptions that configure
the SAS Java environment. Many of the suboptions are installation
and host specific and should not be modified, especially the ones
that provide installed file locations. For managing memory, look for
the -Xmx and -Xms suboptions:
JREOPTIONS=(/* other Java suboptions */ -Xmx128m -Xms128m)
Use this option to
set the minimum Java memory (heap) size, in bytes. Set this value
to a multiple of 1024 greater than 1MB. Append the letter k or K to
indicate kilobytes, or m or M to indicate megabytes. The default is
2MB. Examples:
-Xms6291456
-Xms6144k
-Xms6m
Use this option to
set the maximum size, in bytes, of the memory allocation pool. Set
this value to a multiple of 1024 greater than 2MB. Append the letter
k or K to indicate kilobytes, or m or M to indicate megabytes. The
default is 64MB. Examples:
-Xmx83886080
-Xmx81920k
-Xmx80m
As a general rule, you
should set the minimum heap size (-Xms) equal to the maximum heap
size (-Xmx) to minimize garbage collections.
Typically, SAS sets
both -Xms and -Xmx to be about 1/4 of the total available memory or
a maximum of 128M. However, you can set a more aggressive maximum
memory (heap) size, but it should never be more than 1/2 of physical
memory.
You should be aware
of the maximum amount of physical memory your computer has available.
Let us assume that doubling the Java memory allocation is feasible.
So when you start SAS from a system prompt, you can add the following
option:
-jreoptions (-Xmx256m -Xms256m)
Alternatively, you might
need to specify the setting in quotation marks:
-jreoptions '(-Xmx256m -Xms256m)'
The exact syntax varies
for specifying Java options, depending on your operating system, and
the amount of memory that you can allocate varies from system to system.
The set of JRE options must be enclosed in parentheses. If you specify
multiple JREOPTIONS system options, SAS appends JRE options to JRE
options that are currently defined. Incorrect JRE options are ignored.
If you choose to create
a custom configuration file, you would simply replace the existing
-Xms and -Xmx suboption values in the JREOPTIONS=(
all Java options) portion of the configuration
file.
For more information,
see the SAS Companion for your operating system.