小程序
小游戏
企业微信
微信支付
扫描小程序码分享
我这边用户列表是服务器实时刷新的, 用户列表高峰期有2K人, 如果我要改变某个用户的状态,需要调用下setData, 这样的话会频繁调用setData ,内存会狂涨~ 如果我要操作用户列表,是不是只能放到Page 外面才可以~ 还是起个时钟,比如5分钟同步一次?
14 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
多谢反馈,是我们的问题,但不影响线上用户的体验。
在打开 Android 性能窗口后,我们会记录 setData 的数据,缓存在内存中,直到用户点击「导出 Trace」数据到开发者工具上才会清空,如果 setData 数据频繁 + 数据量较大的情况下,内存缓存的数据会越来越多。下一个版本会去掉记录 setData 的具体数据,只记录具体大小。
关闭 Android 性能窗口后,不会记录这些内容,所以并不影响线上用户的体验。
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
没有,在分析,怀疑是某处内存泄露
wxml 对应的代码能发下?
另外 js 的代码发一个文字版本吧。
当然,如果能少setData一些数据就少set一些比较好。但如果需要set的数据总量一样的话,分成几次做setData的开销肯定比做一次setData的开销大得多。
对,就是这样,也不用收集很久的。一次数据量大也没关系,setData的基础开销比较大,这种数据合并是很有效的。
感谢反馈。如果需要在短时间内连续调用好几次setData,将它们的数据合并起来就好了。
好的,谢谢,有了结果麻烦您告诉我下~
wxml 就上面一句话, 我代码有问题吗?
//index.js
//获取应用实例
var app = getApp();
var theUserList = new Array();
Page({
data: {
g_userlist: {}
},
//事件处理函数
bindViewTap: function () {
wx.navigateTo({
url: '../logs/logs'
})
onLoad: function () {
var that = this;
for (var i = 0; i < 1000; i++) {
var tmpUser = {};
tmpUser.id = i;
tmpUser.name = 'XX' + i;
tmpUser.sex = '男';
theUserList.push(tmpUser);
}
onShow: function () {
var timer = setInterval(function(){
that.setData({
g_userlist: theUserList
});
},1000);
wxml:
<view class="classname" wx:for="{{g_userlist}}">{{item.name}}</view>
修改data里的值的时候,真机上内存会一直涨。 要怎么释放掉吗?
正在加载...
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
多谢反馈,是我们的问题,但不影响线上用户的体验。
在打开 Android 性能窗口后,我们会记录 setData 的数据,缓存在内存中,直到用户点击「导出 Trace」数据到开发者工具上才会清空,如果 setData 数据频繁 + 数据量较大的情况下,内存缓存的数据会越来越多。下一个版本会去掉记录 setData 的具体数据,只记录具体大小。
关闭 Android 性能窗口后,不会记录这些内容,所以并不影响线上用户的体验。
没有,在分析,怀疑是某处内存泄露
wxml 对应的代码能发下?
另外 js 的代码发一个文字版本吧。
当然,如果能少setData一些数据就少set一些比较好。但如果需要set的数据总量一样的话,分成几次做setData的开销肯定比做一次setData的开销大得多。
对,就是这样,也不用收集很久的。一次数据量大也没关系,setData的基础开销比较大,这种数据合并是很有效的。
感谢反馈。如果需要在短时间内连续调用好几次setData,将它们的数据合并起来就好了。
好的,谢谢,有了结果麻烦您告诉我下~
wxml 就上面一句话, 我代码有问题吗?
//index.js
//获取应用实例
var app = getApp();
var theUserList = new Array();
Page({
data: {
g_userlist: {}
},
//事件处理函数
bindViewTap: function () {
wx.navigateTo({
url: '../logs/logs'
})
},
onLoad: function () {
var that = this;
for (var i = 0; i < 1000; i++) {
var tmpUser = {};
tmpUser.id = i;
tmpUser.name = 'XX' + i;
tmpUser.sex = '男';
theUserList.push(tmpUser);
}
},
onShow: function () {
var that = this;
var timer = setInterval(function(){
that.setData({
g_userlist: theUserList
});
},1000);
}
})
wxml:
<view class="classname" wx:for="{{g_userlist}}">{{item.name}}</view>
修改data里的值的时候,真机上内存会一直涨。 要怎么释放掉吗?