OpenJDK“ fastdebug”和“ release”内部版本有什么区别?应用程序在“ fastdebug”上运行的速度可能会比在“发行版”上运行的速度明显慢吗?
我听说“ fastdebug”在某种程度上是“好”,并且可以在Internet上找到许多信息,这些人正在寻找各种OpenJDK版本和各种平台的“ fastdebug”构建,或者解释如何准备这些东西。手动构建,但是在任何地方都很难找到“ fastdebug”实质含义的清晰描述。
答案 0 :(得分:9)
请参阅定义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错误时寻求快速调试版本的原因:在发行版本中发生秘密失败的原因通常是在快速调试中有意义地断言。另外,由于fastdebug通常附带调试符号,并且可以访问发行版本中无法设置的“开发” JVM标志,因此它可以进行更好的调试。