重新渲染地图导致小程序内存溢出,崩溃-黑屏白屏(wx:if,页面跳转方法可触发)
发布于 5 年前 作者 jun18 3715 次浏览 来自 问答

- 当前 Bug 的表现(可附上截图)

三星S6 edge,三星S10 来回切换含地图页(redirectTo),尝试多次后,小程序页面白屏或黑屏,一段时间后不会恢复,有可能导致小程序关闭。

小程序奔溃效果如图:

操作视频如下:0-30s为不含地图页的切换演示,内存不会溢出。30s-1分30s为含地图页的切换演示,多次之后,小程序崩溃。


- 预期表现

包含地图的页面,或地图,在重新渲染时,内存应该被有效回收。重新渲染的时机包括,切换页面(不管是redirect方法还是navigate方法)或wx:if控制的map组件。

- 复现路径

建议使用安卓手机操作(IOS性能监控,不可见内存)

使用wx:if方法控制地图显示或隐藏,内存在地图显示时显著升高,而用hidden方法显示或隐藏地图,不会有此表现。

通过性能窗口观察,发现内存在地图页切换时,升高并不会被销毁。其他普通页面不会有此情况。

推断:内存在地图重新渲染时,未有效回收,多次渲染地图,会造成内存溢出风险。


- 提供一个最简复现 Demo

https://developers.weixin.qq.com/s/V4jTDVmb789C

补充:华为荣耀10青春版复现问题,另外对内存监控数据的准确性表示怀疑。

6 回复

我最近也遇到啦,使用其他类似美团外卖的也会出现这个问题,导致小程序无法使用

我也遇到这个问题,求解,性能模版的内存一直在增加。大致到1100m以上有大概率出现黑屏现象。

代码片段里是否也可以补充这里的相关代码:来回切换含地图页(redirectTo)

大佬,你是在onUnload函数里把map的高度设置为0? 这问题解决了吗?我用live-player组件遇了一样的问题,使用场景是淘宝直播卖货的那种,频繁进出live-player组件的播放页,内存蹭蹭涨

你是测试人员吗?

不知道是否和Map是原生组件有关,其他原生组件未作验证。

回到顶部