The System Dictionary hashtable bucket array size is fixed at 1009. See
the definition of SystemDictionary::_nof_of_buckets in
src/share/vm/classfile/systemDictionary.hpp.
This value is too small for large programs with many names, too large for
small programs and just about right for medium sized ones. The default should
remain at 1009, but it should be possible to override it on the command line.
The switch could be defined as -XX:SystemDictionarySize=<n>.
There has been a request to dynamically resize the SystemDictionary so that most customers do not have to add a command-line flag. This would be in addition to a command-line flag that would allow explicitly setting a starting size for the SystemDictionary.
Update: the actual flag introduced is -XX:PredictedLoadedClassCount=<n>.