By default, the JVM allows only 64MB of memory to be used. If this memory is nearly exhausted, the JVM tries to garbage collect as much memory as possible. If there still isn't enough memory, then the error is thrown.
Note that the error is never thrown if the JVM can prevent it.
You can assign more memory to the JVM using the -Xms and -Xmx parameters; for instance, if you use -Xmx128m (note the m at the end for MB, if you omit it it will use 128 bytes!) it will allow 128MB of memory to be used. These parameters must come before the main class name, otherwise it will be treated as a parameter to the Java program.