Twitter 使用的是什么 JVM?

关注者
177
被浏览
17442
捞起老帖。原本问题是3年前提出的,现在所能了解的信息比当时又更多一些。

Twitter用的是自己定制过的OpenJDK。具体到楼主的问题,“Twitter使用的是什么JVM”,答案是Twitter自己定制过的OpenJDK HotSpot VM。

定制的内容主要集中在instrumentation、diagnostics(诊断)、serviceability(可维护性)方面。Twitter基于OpenJDK 7里新增的 JEP 167: Event-Based JVM Tracing 在制作自己的类似Java Flight Recorder的东西,不过似乎只做了命令行界面的工具而不像JFR那样有好用的图形界面。

之前Twitter还有从JVM外部制作一些诊断工具,例如 jvmgcprof

之前@Rio的答案提到Twitter准备定制OpenJDK HotSpot VM的GC。计划确实是这么计划的,只是一直没顺利实施。Twitter之前定制了MRI的GC,但那其实仍然是个“简单”的GC实现,只是更适合Twitter的使用场景;HotSpot VM自身的GC都比MRI的GC复杂,真要深度定制它并不是那么容易的事。Twitter从Oracle/Sun挖了几位原本HotSpot VM的开发,包括G1 GC作者之一的Tony Printezis,还有原本Sun JVM组负责CMS开发的Y. Srinivas Ramakrishna(“Ramki”),具备深度定制G1 GC的能力。不过至今似乎仍未将深度定制了G1 GC的版本的HotSpot VM部署上线(也可能最近有上线了但我没听说⋯)。

据说Twitter版的改进G1 GC比现在Oracle版的快了不少⋯
2015年初更新:似乎Twitter改进版的G1 GC也上线了。另外他们又挖了一个Oracle做GC的大神过去,不过似乎不是过去做GC,hmm。

小八卦:我以前在Oracle时的小组的PM现在跑到Twitter去做那边JVM组的PM了orz