OpenJDK“fastdebug”和“release”构建之间有什么区别?应用程序在“fastdebug”上的运行速度是否比在“release”上的运行速度明显慢?

我听说“fastdebug”在某种程度上是“好”,并且可以在Internet上找到许多信息,这些人正在寻找各种OpenJDK版本和各种平台的“fastdebug”构建,或者解释如何手动准备这些构建,但在任何地方都找不到“fastdebug”的实质含义的清晰描述。

最佳答案

请参阅here的定义:

###############################################################################
# Set the debug level
#    release: no debug information, all optimizations, no asserts.
#    optimized: no debug information, all optimizations, no asserts, HotSpot target is 'optimized'.
#    fastdebug: debug information (-g), all optimizations, all asserts
#    slowdebug: debug information (-g), no optimizations, all asserts
AC_DEFUN_ONCE([JDKOPT_SETUP_DEBUG_LEVEL],

是的,fastdebug的运行速度可能会比发布慢,因为在此过程中它会断言很多。启用断言是用户怀疑JVM错误时寻求快速调试版本的原因:在发行版本中发生 secret 失败的原因通常是在快速调试中有意义地断言。另外,由于fastdebug通常附带调试符号,并且可以访问发行版本中不可设置的“开发” JVM标志,因此它可以进行更好的调试。

07-24 20:15