jvm on multicore

Itt*_*ayD 8 java performance jvm multicore

我刚才读过一篇博客文章,声称Java应用程序在允许使用多核计算机中的单个cpu时运行得更好:http://mailinator.blogspot.com/2010/02/how-i-sped-上我的服务器逐因子的-6.html

在多核计算机上运行的Java应用程序运行速度比单核计算机慢得多的原因是什么?

sar*_*old 8

如果不同线程中的共享资源之间存在显着争用,则锁定和解锁对象可能需要大量IPI(处理器间中断),并且处理器可能花费更多时间丢弃其L1和L2缓存并重新获取来自其他CPU的数据,而不是实际花费在解决手头问题上的进展.

如果应用程序具有太细粒度的锁定,则可能会出现问题.(我曾经听过它总结说"没有必要为每个CPU缓存行提供多个锁定",这绝对是正确的,而且可能仍然太精细了.)

Java的"每个对象都是一个互斥体"可能导致在运行的系统中有太多的锁,如果有太多的实时和争用.

我毫不怀疑有人可以故意编写这样的应用程序,但它可能并不常见.大多数开发人员会编写应用程序以尽可能减少资源争用.