Lesson 1: Almost All Synchronization Locks are Only Used by One Thread
99,99 percent of all locks are only used by one thread. This observation led sun to the “Biased Locking” optimization for this case, see Synchronization in Java SE 6. Please note the logarithmic scale:
This means if you want to improve the performance of your web application, you should focus on those 0.01 percent of locks.
Lesson 2: The Amount of Synchronization Locks Grows Linear With the Number of Concurrent Accesses
This shows that the different parts of the application have a similar synchronization behaviour. I will collect statistics for other types of applications, to see if they behave similarly.
Lesson 3: The Amount of Data Races Grows Linear With the Number of Concurrent Accesses
Similar to lesson 2, this shows that the different parts of the application also have synchronization problems. To make sure that your web application does not behave as the typical web application, use vmlens to get rid of race conditions.