SAS confirmed the problem and issued a SAS Note 67620 " A hash object in SAS® 9.4M7 (TS1M7) might consume significantly more memory than it did in previous releases"
From the note:
This problem occurs when the HASHEXP method is not specified when defining the hash object. The amount of memory that is allocated can vary, depending on the data within the defined hash.
The workaround is to define the hash object with the HASHEXP method, as illustrated by the syntax fragment below:
data HASH_LOOKUP;
if _n_ eq 1 then do;
declare hash H (dataset: "TEST_DSET (where=(CHAR1 eq 'ABCDE'))",HASHEXP:8);
...more code...
If the HASHEXP method is not specified in the declaration, a default value of 8 is used. However, specifying HASHEXP:8 (the default) in the DECLARE statement will dramatically reduce the step memory footprint than not coding the method. The value for the HASHEXP method depends on usage. It is recommended that you test different values to find the optimal value for each case.
... View more