我不知道为什么是25

I does not know why it is 25

[在此处输入图片描述][1]

[1]: https://i.stack.imgur.com/gg6E1.jpg 请告诉我为什么是 25。

首先:提问时请描述性,并提供一些背景信息。

  • 您是在哪里遇到该代码的?
  • 你在乎有门槛吗? (例如 "Why does V8's ShouldBePromoted function contain a check for remaining to-space capacity?")
  • 你关心阈值的具体值吗? (例如 "Why is the value of this threshold 25% and not 24%?")
  • 你为什么关心?有问题还是您只是好奇?
  • Post 文本和代码作为文本,而不是 images/screenshots.

提供一些背景知识有助于您获得更好的答案,真正解决您想知道的问题!

其次,这段代码必须来自某个古老版本的V8。它在 2014 年被删除。显然有人有理由决定最好不要拥有它。

综上所述,一般的答案是:这是一种启发式方法,可能被发现在某些时候效果很好。原因可能是当只有少数对象在清除后幸存下来时,分代 GC 效率最高。如果一个应用程序有一个分配模式,其中许多年轻的对象在一次清除中幸存下来,那么立即将它们提升到 old-space 可以节省时间(否则它们很快就会被提升,这将是另一个复制操作)。在实施这个总体思路时,你必须决定"how many objects is 'few' objects?";老V8刚好在这里选择了"a quarter of new-space size"