8 月 7 日消息,腾讯 QQ 近期对桌面客户端进行了大刀阔斧的改革,三大系统平台都用上了全新 QQ NT 架构,基于 Electron 框架开发,因此也引来了用户关于“高内存占用、超大安装包、启动缓慢”等的担忧。
日前,QQ 技术团队在 InfoQ 平台发布了一篇介绍文章,分享了其在内存上进行专项优化的阶段性进展。
据介绍,新版 QQ 在内存上的挑战主要表现在以下 4 个方面:
产品形态:由 1 个复杂的大面板(100+ 复杂程度不等的模块)和一系列独立功能窗口构成。窗口与渲染进程一一对应,窗口进程数很大程度影响 Electron 的内存占用。对于那个复杂的大面板,一旦没有精细控制就很容易导致内存持续走高。
▲ Electron 窗口多进程
使用习惯:用户长时间挂机。相比用完即走的 Web 页面,QQ 用户在一次登录后,可能会挂机一个月以上。这段期间,如果没有控制好 QQ 内存使用,那么结果可能是内存越占越大、用户交互响应变慢、甚至发生闪退。
版本迭代:已经 24 岁的 QQ 拥有众多的功能和特性,过去一年团队一直做这件事:从核心特性开始快速补齐 Windows 版本的功能,同时也有一些高优先级的新功能要上。持续且快速的版本迭代,很可能产生新问题,使性能劣化。
应用架构:新版 QQ 依赖一个 NT 核心数据模块(C++ addon),为 UI 提供本地化的数据服务。QQ 的加载体验能做到如此丝滑,这个模块起到了至关重要的作用。同时,与 NT 的联动优化,也需要拉通客户端 C++ 开发同学共同完成,当然,会存在一些沟通成本,但不可否认,能把内存占用压下来,客户端同学也付出了非常多的努力。
▲ 桌面端 QQ 整体架构,
对此,QQ 技术团队的工作主要包括以下几个方面:
工具分析:首先,团队需要使用不同维度的内存分析工具,从 V8 引擎到进程,再到整个应用程序,打通整个链路进行多角度的细节分析,以此来定位内存使用的瓶颈。
定向优化:在通过工具定位到问题之后,团队会采取一系列的针对性优化策略,包括缓存策略、按需加载、优雅降级等。
线上监控:在本地或小范围内验证通过之后,团队需要广大用户的验证来确认优化措施是否适用于所有场景。然而,如何获取用户在 Windows 任务管理器中看到的内存使用量是一个挑战,团队已经做了大量的研究和验证。
防止性能退化和自动化测试:为了保护辛苦得来的优化成果,并避免频繁的版本迭代影响 QQ 的内存目标,团队会借助开发框架、工具建设、代码审查等手段来预防性能退化。
QQ 技术团队表示,从结果或者解决问题的角度来看,经过一系列优化之后基本可以将 QQ 核心聊天场景的内存控制在 300M 以内,150M 的安装包大小,与旧版纯 Native QQ 差别较小。不单单内存占用,其他核心体验,比如切 AIO 的流畅度上要优于旧版 QQ。
此前报道,腾讯已推出了 Windows QQ 9.9.1 以及 Mac QQ 6.9.18 版本更新,带来了多项优化和改进,后续预计还会有更多性能提升。
日前,QQ 技术团队在 InfoQ 平台发布了一篇介绍文章,分享了其在内存上进行专项优化的阶段性进展。
据介绍,新版 QQ 在内存上的挑战主要表现在以下 4 个方面:
产品形态:由 1 个复杂的大面板(100+ 复杂程度不等的模块)和一系列独立功能窗口构成。窗口与渲染进程一一对应,窗口进程数很大程度影响 Electron 的内存占用。对于那个复杂的大面板,一旦没有精细控制就很容易导致内存持续走高。
▲ Electron 窗口多进程
使用习惯:用户长时间挂机。相比用完即走的 Web 页面,QQ 用户在一次登录后,可能会挂机一个月以上。这段期间,如果没有控制好 QQ 内存使用,那么结果可能是内存越占越大、用户交互响应变慢、甚至发生闪退。
版本迭代:已经 24 岁的 QQ 拥有众多的功能和特性,过去一年团队一直做这件事:从核心特性开始快速补齐 Windows 版本的功能,同时也有一些高优先级的新功能要上。持续且快速的版本迭代,很可能产生新问题,使性能劣化。
应用架构:新版 QQ 依赖一个 NT 核心数据模块(C++ addon),为 UI 提供本地化的数据服务。QQ 的加载体验能做到如此丝滑,这个模块起到了至关重要的作用。同时,与 NT 的联动优化,也需要拉通客户端 C++ 开发同学共同完成,当然,会存在一些沟通成本,但不可否认,能把内存占用压下来,客户端同学也付出了非常多的努力。
▲ 桌面端 QQ 整体架构,
对此,QQ 技术团队的工作主要包括以下几个方面:
工具分析:首先,团队需要使用不同维度的内存分析工具,从 V8 引擎到进程,再到整个应用程序,打通整个链路进行多角度的细节分析,以此来定位内存使用的瓶颈。
定向优化:在通过工具定位到问题之后,团队会采取一系列的针对性优化策略,包括缓存策略、按需加载、优雅降级等。
线上监控:在本地或小范围内验证通过之后,团队需要广大用户的验证来确认优化措施是否适用于所有场景。然而,如何获取用户在 Windows 任务管理器中看到的内存使用量是一个挑战,团队已经做了大量的研究和验证。
防止性能退化和自动化测试:为了保护辛苦得来的优化成果,并避免频繁的版本迭代影响 QQ 的内存目标,团队会借助开发框架、工具建设、代码审查等手段来预防性能退化。
QQ 技术团队表示,从结果或者解决问题的角度来看,经过一系列优化之后基本可以将 QQ 核心聊天场景的内存控制在 300M 以内,150M 的安装包大小,与旧版纯 Native QQ 差别较小。不单单内存占用,其他核心体验,比如切 AIO 的流畅度上要优于旧版 QQ。
此前报道,腾讯已推出了 Windows QQ 9.9.1 以及 Mac QQ 6.9.18 版本更新,带来了多项优化和改进,后续预计还会有更多性能提升。