当前位置: 首页 > Web前端 > HTML

使用ChromeDeveloperTools的Memory选项卡分析内存泄漏

时间:2023-03-28 15:23:20 HTML

当运行在server端的web应用的Node.js进程pod重启时,如下图Dynatrace工具所示:分析内存泄漏的关键是在不同的时间点收集多个内存转储(MemoryDump),并比较每个收集之间的对象增长情况,例如Pod重启后不久和内存饱和前不久。您可以从BrowserDevelopmentTools>Memory(应选择heapsnapshot)>LoadinChrome收集和加载MemoryDump。一旦在不同时间段创建了内存转储,就可以使用嵌入式比较工具快速识别两个时间点之间增长最快的对象。使用ChromeInspect工具,可以连接到远程目标并实时观察内存使用情况。如果本地可以重现内存泄漏问题,可以按照本地运行DebuggingStorefront进行。在调试模式下运行Node.js应用程序,访问chrome://inspect,如果您在端口转发中配置了localhost:9229,此时您应该能够看到应用程序并对其进行调试。在JSStorefront应用程序中导致内存泄漏的最常见错误之一是订阅事件而不是在组件被销毁后取消订阅。这是防止这种内存泄漏的示例-关键是检查您的代码并确保您取消订阅ngOnDestroy()中的任何事件。当使用EventService并忘记从事件源Observable中注销时,也会发生同样的情况。任何时候使用事件服务,都应该使用register()返回的拆卸函数取消注册。SSR缓存在SSR模式下运行的JSStorefront应用程序中改善内存消耗的最强大工具之一是SSR缓存,有两种方法:不推荐:直接在服务器上缓存呈现的SSR页面。在生产环境中不建议这样做,因为它不能很好地扩展并且最终会比没有启用SSR缓存消耗更多的内存。推荐做法:在CDN上缓存呈现的SSR页面。这可以提高SSR应用程序的性能,因为它将减少命中SSR服务器的请求数量,同时将预渲染页面的存储保存到专门为此目的构建的服务器。