- 適用於 JDK 23 的 GraalVM (最新)
- 適用於 JDK 24 的 GraalVM (搶先體驗)
- 適用於 JDK 21 的 GraalVM
- 適用於 JDK 17 的 GraalVM
- 封存
- 開發版本
部署 TruffleRuby
如果您嘗試在生產環境中部署 TruffleRuby,我們建議您與我們聯繫,以便我們協助您了解目前可行的方式,並協助您解決任何問題。
本文檔詳細說明了 TruffleRuby 的不同執行階段設定。
TruffleRuby 執行階段設定 #
TruffleRuby 有兩種主要設定:原生和 JVM。了解 TruffleRuby 的不同設定非常重要,因為每個設定都有不同的功能和效能特性。您應該選擇適合您應用程式的執行模式。
原生設定 #
在原生獨立版中,TruffleRuby 在原生設定下執行。在此設定中,TruffleRuby 會預先編譯為獨立原生可執行檔。這表示您不需要在系統上安裝 JVM 即可使用它。
原生設定的優點是它啟動速度與 MRI 大致相同、可能使用較少的記憶體,而且比 JVM 設定更快進入高速狀態。缺點是您無法使用 VisualVM 等 Java 工具,Java 互通性較不方便 (詳細資訊請參閱此處),而且效能峰值可能低於 JVM。
預設使用原生設定,但您也可以使用 --native
要求它。若要搭配原生設定使用多語言程式設計,您需要傳遞 --polyglot
旗標。
JVM 設定 #
TruffleRuby 也可用於 JVM 設定中 (透過使用 JVM 獨立版或透過嵌入),在此設定中,它會作為 JVM 上的正常 Java 應用程式執行。JVM 設定的優點是您可以輕鬆使用 Java 互通性,而且效能峰值可能高於原生設定。缺點是啟動和進入高速狀態需要更長的時間,而且可能使用更多記憶體。您可以使用 --jvm
選擇 JVM 設定。
選擇最佳設定 #
如果您執行的是短時間運行的程式,您可能需要預設的原生設定。如果您執行的是長時間運行的程式,並想要盡可能最高的效能,您可能需要使用 --jvm
的 JVM 設定。
獲得最佳啟動時間效能 #
在大多數情況下,若要獲得最佳啟動時間,您需要使用預設的原生設定。
獲得最低記憶體用量 #
若要獲得最低的記憶體用量,您可能一開始需要使用原生設定,但隨著您獲得更大的物件工作集,您可能會發現較簡單的垃圾收集器和目前缺乏壓縮一般物件指標 (OOPS) 實際上會增加記憶體用量,而且您最好使用 JVM 設定,並使用 --jvm
來減少記憶體用量。
從 TruffleRuby 獲得最佳效能峰值 #
若要從 TruffleRuby 獲得長時間運行應用程式的最佳效能峰值,我們在大多數情況下建議使用 --jvm
的 JVM 設定。
但是,若要達到此效能峰值,您需要預熱 TruffleRuby,就像您對大多數高度最佳化的虛擬機器所做的一樣。這是透過在負載下運行應用程式一段時間來完成的。如果您監控效能 (透過測量操作時間或回應時間),您會看到它隨著時間的推移而減少,然後可能會趨於穩定。
記錄 #
Ruby 應用程式記錄和警告的運作方式與 Ruby 的標準實作相同。
對於 TruffleRuby 內部的記錄,則使用標準 Java 記錄。可以使用 --log.level=INFO
、=FINEST
等設定記錄層級。