- 适用于 JDK 24 的 GraalVM(最新)
- 适用于 JDK 25 的 GraalVM(早期访问)
- 适用于 JDK 21 的 GraalVM
- 适用于 JDK 17 的 GraalVM
- 存档
- 开发构建
部署 TruffleRuby
如果您正尝试将 TruffleRuby 部署到生产环境进行试验,我们鼓励您联系我们,以便我们帮助您了解当前的可能性并解决您可能遇到的任何问题。
本文档详细介绍了 TruffleRuby 的不同运行时配置。
TruffleRuby 运行时配置 #
TruffleRuby 主要有两种配置:原生和 JVM。了解 TruffleRuby 的不同配置非常重要,因为每种配置都具有不同的功能和性能特点。您应该选择适合您应用程序的执行模式。
原生配置 #
在原生独立模式下,TruffleRuby 以原生配置运行。在此配置中,TruffleRuby 被预编译成一个独立的本机可执行文件。这意味着您的系统上不需要安装 JVM 即可使用它。
原生配置的优势在于它启动速度与 MRI 相近,内存使用可能更少,并且比 JVM 配置更快达到高性能。缺点是您无法使用 VisualVM 等 Java 工具,Java 互操作性不如 JVM 配置方便(详情请参阅此处),并且峰值性能可能低于 JVM。
默认使用原生配置,但您也可以通过使用 --native
来请求它。要在原生配置下使用多语言编程,您需要传递 --polyglot
标志。
JVM 配置 #
TruffleRuby 也可以在 JVM 配置下使用(通过使用 JVM 独立模式或通过嵌入),在这种模式下,它作为正常的 Java 应用程序在 JVM 上运行。JVM 配置的优势在于您可以轻松使用 Java 互操作性,并且峰值性能可能高于原生配置。缺点是它启动和达到高性能所需时间更长,并且可能使用更多内存。您可以通过传递 --jvm
来选择 JVM 配置。
选择最佳配置 #
如果您运行的是短时运行的程序,您可能希望使用默认的原生配置。如果您运行的是长时间运行的程序并希望获得尽可能高的性能,您可能希望通过使用 --jvm
来选择 JVM 配置。
获得最佳启动时间性能 #
在大多数情况下,为了获得最佳启动时间,您会希望使用默认的原生配置。
获得最低内存占用 #
为了获得最低内存占用,您最初可能希望使用原生配置,但随着您获得更大的工作对象集,您可能会发现更简单的垃圾收集器和目前缺乏压缩的普通对象指针 (OOPS) 实际上会增加您的内存占用,此时使用 --jvm
的 JVM 配置来减少内存使用会更好。
从 TruffleRuby 获得最佳峰值性能 #
对于长时间运行的应用程序,为了从 TruffleRuby 获得最佳峰值性能,我们通常会推荐使用 --jvm
的 JVM 配置。
然而,要达到这种峰值性能,您需要对 TruffleRuby 进行预热,就像您对大多数重度优化型虚拟机所做的那样。这可以通过在负载下运行应用程序一段时间来完成。如果您监控性能(通过测量操作时间或响应时间),您会看到它随着时间的推移而降低,然后可能趋于稳定。
日志记录 #
Ruby 应用程序的日志记录和警告功能与 Ruby 的标准实现相同。
对于 TruffleRuby 内部组件的日志记录,使用标准 Java 日志。日志级别可以通过 --log.level=INFO
、=FINEST
等进行设置。