减少Javascript内存泄漏?

减少Javascript内存泄漏?,javascript,jquery,memory,memory-leaks,datatables,Javascript,Jquery,Memory,Memory Leaks,Datatables,我一直在努力减少我们的web应用程序使用的javascript内存(没有使用jQuery&Bootstrap的MVC框架和大量插件)。并消除内存泄漏。在我们的web应用程序中,有一个充满Highcharts的仪表板。根据用户的选择,它可以是任何数字,也可以是0或50。有很多带有数据表的页面,有很多表单可以通过应用程序创建更新数据 现在我被要求减少内存使用。我使用谷歌chrome开发工具,通过在内存选项卡中使用“堆快照分析”,减少了内存泄漏。在刷新图表时,我添加了一个新图表,而不是删除旧图表。所以

我一直在努力减少我们的web应用程序使用的javascript内存(没有使用jQuery&Bootstrap的MVC框架和大量插件)。并消除内存泄漏。在我们的web应用程序中,有一个充满Highcharts的仪表板。根据用户的选择,它可以是任何数字,也可以是0或50。有很多带有数据表的页面,有很多表单可以通过应用程序创建更新数据

现在我被要求减少内存使用。我使用谷歌chrome开发工具,通过在内存选项卡中使用“堆快照分析”,减少了内存泄漏。在刷新图表时,我添加了一个新图表,而不是删除旧图表。所以在去掉旧的图表后,它被替换了,产生了很好的影响。不过,我们还是想挖掘北斗七星,看看还有什么可以改进的

现在,我在DataTables中看到了同样的情况,每当您转到新页面时,我们都会添加新的DataTables。在检查之后,我发现我们并没有破坏它们,破坏它们并不会产生什么影响,我们对海图的影响

这里我们调用jqueryajax调用来更改页面的内容。我们使用“.html(newContent)”来更改主容器中的文本,以及每个我们想要更改内容的html元素,因为它说它应该删除所有事件侦听器,并且应该删除对这些元素的引用,但是数据表仍然存在于内存中。也许还有很多其他的事情

此外,我还试着去掉身体标签并检查记忆屏幕截图。屏幕截图的大小保持不变。它显示许多元素已被解除连接。但它对Javascript内存使用和Javascript内存分配的影响接近于0

我是否走上了减少内存泄漏的正确道路。还是我现在无能为力

屏幕截图很少

这些所有屏幕截图都是在删除body标签的所有子项之后生成的。就像我们删除所有元素一样,它的javascript内存使用率应该很低,但在这里我看到的变化接近于0

在这里,您可以看到我们仍然在使用50MB的javascript内存。

我们的内存中仍有数据表。

快照和内存分配都有所增加。是的,在down显示未连接元素的位置内存分配有所减少,但这是正常的。

所有这些数据的解释应该是什么

我已经读了很多关于这个的StackOverflow问题和关于内存泄漏的博客。但是没有什么能产生重大影响?

在删除数据表之前,您是否尝试过调用它们?是的。我尝试在DataTables上调用destroy(),它将成为Api,但对内存分配没有影响。但是,是的,我肯定会在每次加载下一页时销毁数据表。