Twitter 使用的是什麼 JVM? | 知乎問答精選

 

A-A+

Twitter 使用的是什麼 JVM?

2018年09月10日 知乎問答精選 暫無評論 閱讀 5 ℃ 次

【RednaxelaFX的回答(48票)】:

撈起老帖。原本問題是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,具備深度定制G1 GC的能力。不過至今似乎仍未將深度定制了G1 GC的版本的HotSpot VM部署上線。

小八卦:我以前在Oracle時的小組的PM現在跑到Twitter去做那邊JVM組的PM了orz

【Rio的回答(14票)】:

Twitter 的應用服務工程經理 Raffi Krikorian 在 O』Reilly OSCON Java 2011 會議的演講上提到 Twitter 的後端服務用的是 OpenJDK。現在 Twitter 的所有後台應用都是用 JVM 平台的三大語言 Java, Scala, 和 Clojure 寫的了,RoR 只在前端部分還有保留。Raffi 還提到為了進一步提高性能,Twitter 將像以前使用 Ruby MRI 時一樣,改寫 OpenJDK 的垃圾回收器,

來源:ontwik.com/rails/oreill

【知乎用戶的回答(0票)】:

Twitter的後端很雜。Scala這個java下的動態語言用了一部分。用的什麼jvm,應該並無太大的區別。成熟的無非就是Sun(現Oracle) jdk、IBM jdk、OpenJdk、GCJ這幾個了。兼容性都不錯。

【RainDiao的回答(2票)】:

JDK和JVM不是一個概念吧。現有的JVM,最常見的應該是Sun(Oracle) JVM, JRockit JVM。 IBM JVM不清楚用得還多不多。Apache的Harmony應該也算是一種JVM實現,不過現在因為專利、許可證一類的東西,可能要被Oracle搞死。

至於Twitter用的哪個,卻是不清楚,估計不是Sun JVM就是JRocket

標籤:-Twitter -Java -Java虛擬機(JVM) -技術選型 -Scala -Clojure


相關資源:





給我留言