“Available core counts are going up, up, up! Intel is shipping quad-core chips; Sun’s Rock has (effectively) 64 CPUs and Azul’s hardware nearly a thousand cores. How do we use all those cores effectively? The JVM™ machine proper can directly make use of a small number of cores (JIT compilation, profiling), and garbage collection can use about 20 percent more cores than the application is using to make garbage–but this hardly gets us to four cores. Application servers and transactional—Java™ 2 Platform, Enterprise Edition (J2EE™ platform)/bean–applications scale well with thread pools to about 40 or 60 CPUs, and then internal locking starts to limit scaling. Unless your application, such as a data mining; risk analysis; or, heaven forbid, Fortran-style weather-prediction application has embarrassingly parallel data, how can you use more CPUs to get more performance? How do you debug the million-line concurrent program?”
Here are presentation slides of this JavaOne 2008 talk on Challenges and Directions in the Multicore Era (The conference was held from May 6th to 9th, 2008.
Full Story (pdf)


