当前位置: 首页 > 面试题库 >

Node.js和V8垃圾回收

陈项禹
2023-03-14
问题内容

这是我到目前为止所读的内容,如果我写错了,请更正我:

  1. Node.js基于V8 JavaScript引擎。
  2. V8 JavaScript引擎实现了世界垃圾收集

这导致Node.js有时完全关闭几秒钟到几分钟来处理垃圾回收。

如果这是为生产代码运行的,那么对于10,000个用户而言,这是几秒钟。

这在生产环境中真的可以接受吗?


问题答案:

是否可接受取决于您的应用程序和堆大小。Big
Gc约为每兆字节1.3ms。YMMV。压缩GC的大约一半。每10个GC中大约有1个很大。压缩中约有1个大型GC(占3个)。使用V8标志–trace-
gc记录GC。我们已经做了一些减少暂停的工作。没有承诺,没有时间表。参见V8存储库中的branch / experimental / gc。



 类似资料:
  • 问题内容: 我很好奇嵌套函数的node.js模式如何与v8的垃圾收集器一起工作。这是一个简单的例子 如果restofprogram是长时间运行的,那是否不意味着str将永远不会被垃圾回收?我的理解是,使用结点,您最终会获得很多嵌套函数。如果在外部声明了restofprogram,是否会收集垃圾,因此str不能在范围内?这是推荐做法吗? 编辑 我不想使问题复杂化。那只是粗心,所以我修改了它。 问题答

  • 前言 本篇文章主要是介绍,JavaScript性能优化之V8垃圾回收策略的相关内容 V8垃圾回收策略 1.采用分代回收的思想 2.内存分为新生代和老生代 3.针对不同对象采用不同的算法 V8垃圾回收策略演示图 在上图所示中,内存分为两部分,一个是新生代一个是老生代,两个区域采用不同的GC算法 V8中常用的GC算法 1.分代回收 2.空间复制 3.标记清除 4.标记整理 5.标记增

  • 垃圾回收 我们对生产中花了很多时间来调整垃圾回收。垃圾回收的关注点与Java大致相似,尽管一些惯用的Scala代码比起惯用的Java代码会容易产生更多(短暂的)垃圾——函数式风格的副产品。Hotspot的分代垃圾收集通常使这不成问题,因为短暂的(short-lived)垃圾在大多情形下会被有效的释放掉。 在谈GC调优话题前,先看看这个Attila的报告,它阐述了我们在GC方面的一些经验。 Scal

  • 对于开发者来说,JavaScript 的内存管理是自动的、无形的。我们创建的原始值、对象、函数……这一切都会占用内存。 当我们不再需要某个东西时会发生什么?JavaScript 引擎如何发现它并清理它? 可达性(Reachability) JavaScript 中主要的内存管理概念是 可达性。 简而言之,“可达”值是那些以某种方式可访问或可用的值。它们一定是存储在内存中的。 这里列出固有的可达值的

  • 垃圾收集,引用计数,显式分配 和所有的现代语言一样,OCaml提供垃圾收集器,所以你不用像C/C++一样显式地分配和释放内存。 JWZ在他的文章 "Java sucks" rant(Java蛋疼(怒)!): 第一个好家伙是Java没有 free()。其他的都没有所谓了。这几乎掩盖了所有的缺点,不管有多糟糕, 这个有点让后续文档基本都没有意义了,但是...(译注:但是啥大家自己看吧) OCaml的垃

  • Go 开发者不需要写代码来释放程序中不再使用的变量和结构占用的内存,在 Go 运行时中有一个独立的进程,即垃圾收集器(GC),会处理这些事情,它搜索不再使用的变量然后释放它们的内存。可以通过 runtime 包访问 GC 进程。 通过调用 runtime.GC() 函数可以显式的触发 GC,但这只在某些罕见的场景下才有用,比如当内存资源不足时调用 runtime.GC(),它会在此函数执行的点上立