Comparing with the same test with JDK 1.4.0, JDK 1.3.1 increased the total
memory in smaller amounts. Other than this the output seems to be identical.
Outputs tail_16_08 and tail_16_16 were also very similar to JDK 1.4.0.
However, tail_16_24 had a surprise for me. The program ran to the end without
any memory problem:
One thing different in JDK 1.3.1 is that the memory recovered by the
garbage collector at second 67 was not immediately given to the application
as free memory until second 68.
It seemed to me that JDK 1.3.1 had a better garbage collection process. So
I tried two tests with higher memory requirements:
It is very interesting to see that the JVM died out of memory, but there
was 5632KB memory as garbage. Why did the JVM not collect
garbages at that time?
Comparing with JDK 1.4.0, JDK 1.3.1 did a good job in collecting garbages.
JDK 1.3.1 allowed
GCTest to use up to 88% of the total memory, while JDK 1.4.0 crashed when GCTest
tring to get 63% of the total memory.