We have recently upgraded one of our applications from Java 1.4 to Java 6.
With some load & performance tests, we observed that available memory stayed in general at much lower levels in Java 6 than at what it used to be with Java 1.4.
After some profiling on the app with Java 6, we noticed that many objects no longer referenced by any other objects (i.e. candidates for garbage collection) stayed in memory and were apparently never garbage collected. We took that as the explanation for the lower available memory.
Question is: did the way garbage collection behaves changed from Java 1.4 to Java 6?