Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Aurelia自定义元素未在chrome中垃圾收集_Javascript_Google Chrome_Memory Management_Memory Leaks_Aurelia - Fatal编程技术网

Javascript Aurelia自定义元素未在chrome中垃圾收集

Javascript Aurelia自定义元素未在chrome中垃圾收集,javascript,google-chrome,memory-management,memory-leaks,aurelia,Javascript,Google Chrome,Memory Management,Memory Leaks,Aurelia,我在我的Aurelia应用程序中发现了一个内存泄漏,其中一些自定义元素没有被垃圾收集器从对象图中删除,我完全迷失了方向 我使用ChromeDevTools内存快照工具跟踪所有引用,并能够删除所有引用。至少我在开发工具中再也找不到任何引用自定义元素的黄色节点了。现在我只有很多未清理的分离节点 有人知道找到这些参考资料的其他方法吗 我用npm模块heapsnapshot进行了尝试,并在自定义元素上使用了函数pathToRoot。此函数用于搜索根元素的递归路径。甚至这个函数也告诉我,我的自定义元素实

我在我的Aurelia应用程序中发现了一个内存泄漏,其中一些自定义元素没有被垃圾收集器从对象图中删除,我完全迷失了方向

我使用ChromeDevTools内存快照工具跟踪所有引用,并能够删除所有引用。至少我在开发工具中再也找不到任何引用自定义元素的黄色节点了。现在我只有很多未清理的分离节点

有人知道找到这些参考资料的其他方法吗

我用npm模块
heapsnapshot
进行了尝试,并在自定义元素上使用了函数
pathToRoot
。此函数用于搜索根元素的递归路径。甚至这个函数也告诉我,我的自定义元素实例没有到根的路径。那为什么它还在记忆中呢


如果有人想找到解决方案,我可以从chrome上提供堆快照。

事实上,今天我在3天后找到了解决方案!我使用分析工具的方式是正确的,但我并不认为对开发工具的引用也会阻止垃圾收集。我在我的
app.js
中有一个事件侦听器来检测当前页面,并将其作为类呈现在我的
路由器视图上。在这个监听器中有一个日志记录,它使用调试方法记录指令,然后在dev工具的日志输出和指令之间创建一个引用,从而创建对所有子视图的引用

ea.subscribe('router:navigation:complete', ({instruction}) => {
  log.debug('Main route switched', instruction); // <<<<<<<<<<< Memory leak
  this.currentRoute = instruction.router.currentInstruction && instruction.router.currentInstruction.config.name;
});
ea.subscribe('router:navigation:complete',({instruction})=>{

log.debug('Main route switched',instruction);//请共享演示问题并可复制的最少代码。很遗憾,共享代码是不可能的,因为它是一个基于Aurelia的更大的单页应用程序,而且是我的工作项目。因此,共享内容的可能性有限:(如果无法共享完整代码,请尝试用尽可能少的代码复制问题。请参阅