有没有办法检测JavaScript方法是否被GC中断?

有没有办法检测JavaScript方法是否被GC中断?,javascript,garbage-collection,Javascript,Garbage Collection,我试图分析一个JavaScript函数,它通常需要不到1ms的时间来执行。但在一些非常罕见的场景中,可能需要几百毫秒才能完成执行,我怀疑这是由于GC中断了方法的执行 因此,我的问题是: 是否有一种方法可以告诉浏览器在执行特定函数时不要运行GC(可以是特定于浏览器的) 我可以检测GC事件何时发生 对于最后一个问题,我正在考虑使用新的performance.memory对象: var startHeap = performance.memory.usedJSHeapSize // execute J

我试图分析一个JavaScript函数,它通常需要不到1ms的时间来执行。但在一些非常罕见的场景中,可能需要几百毫秒才能完成执行,我怀疑这是由于GC中断了方法的执行

因此,我的问题是:

  • 是否有一种方法可以告诉浏览器在执行特定函数时不要运行GC(可以是特定于浏览器的)
  • 我可以检测GC事件何时发生
  • 对于最后一个问题,我正在考虑使用新的
    performance.memory
    对象:

    var startHeap = performance.memory.usedJSHeapSize
    // execute JS method here
    if (performance.memory.usedJSHeapSize < startHeap) {
        //GC event
    }
    
    var startHeap=performance.memory.usedJSHeapSize
    //在这里执行JS方法
    if(performance.memory.usedJSHeapSize

    这种方法的问题在于,至少在Chrome中,使用的堆值非常不准确。它被四舍五入到百分之千字节,如果执行了GC事件,它不会改变。

    你到底在写什么?几百毫秒的速度不够快,你必须深入到内部?它是一个关于突变事件的处理程序。因此,每次修改DOM属性或插入新元素时,都会执行该方法,并且需要非常快的速度。@奇怪的几百毫秒仅为1/10秒。。。在某些情况下,这是一段很长的时间,当“很少”接近5。。。比如说动画,它不是。严重的是,即使是1秒的延迟通常也不是什么大问题。除非你是在线写FPS,“百分之千字节”等于10字节:它需要精确到多少?但实际上,你可以忽略它所花费的时间,在暂停期间没有其他东西在前进或后退,所以这并不重要。另外,不要期望突变总是以正确的顺序报告:它们是异步事件,如果你想让它100%的时间工作,就需要这样处理。。。