爱喝咖啡的老猫
爱喝咖啡的老猫
  • 发布:2024-06-21 13:45
  • 更新:2024-06-22 10:04
  • 阅读:138

uts ios 插件 内存泄漏问题

分类:uts

我在开发ios的uts插件,发现uts环境下,ios的内存回收机制不起作用,只是一个简单下载文件,申请内存Data类,即便已经离开闭包,内存也没有释放,最终由于内存不足,导致闪退。代码如下:
desPackage(decode : string) {
//var decodedData : NSData = new NSData(base64Encoded = decode, options = NSData.Base64DecodingOptions.init(rawValue = 0)) as NSData;
var data : Data = new Data(base64Encoded = decode) as Data;
if (data[0] != 1) {
console.log("error package");
return;
}
var pos = Number.from(data[1]) 256 256 256 + Number.from(data[2]) 256 256 + Number.from(data[3]) 256 + Number.from(data[4]);
var dticket : [UInt8] = [];
for (var i : Int = 0; i < 20; i++) dticket.append(data[5 + i]);
var ticket = this.sha1str(dticket);
if (!this.recvFile.has(ticket)) return;
var recvinfo = this.recvFile.get(ticket) as UTSJSONObject;
var filename = recvinfo.getString("file");
if (filename == null) return;
var rds = this.rds.get(filename!);
if (rds == null) return;
var b : [UInt8] = [0];
/var buf = new Data();
for (var i : Int = 25; i < data.count; i++) {
b[0] = data[i];
buf.append(contentsOf = b);
}
this.writeFile(rds!, buf, pos);
/
var sip = recvinfo.getString("sip");
var sport = recvinfo.getNumber("sport");
var packsize = recvinfo.getNumber("packageSize");
if (sip == null || sport == null) return;
if (packsize == null) return;
var spos = Math.floor(pos / packsize!);
var cc = this.confirm.get(ticket);
cc?.delete(spos);
var rcount = recvinfo["rcount"] as number;
rcount = rcount + 1;
if (rcount >= 25 || cc!.size < 25) {
recvinfo.set("rcount", 0);
var ret = "{\"op\":9,\"ticket\":\"" + ticket + "\",\"rcount\":" + rcount.toString() + "}";
var sdata = ret.data(using = String.Encoding.utf8)!;
this.sendByte(sdata, sip!, sport!);
}
else {
recvinfo.set("rcount", rcount);
return;
}
recvinfo.set("time", Date.now());
}
这段代码申请了三个Data对象,最终内存都没有释放,请问是怎么回事,该如何应对!谢谢

2024-06-21 13:45 负责人:无 分享
已邀请:
DCloud_iOS_LZY

DCloud_iOS_LZY

使用的HX是什么版本?另外你贴的这段代码无法运行,请提供一个可以复现问题的最简示例。

爱喝咖啡的老猫

爱喝咖啡的老猫 (作者) - 爱喝咖啡的老毛

hbuilderX 4.15,这段代码是uts插件的一段代码,单独无法复现,我们团队正在使用UDP协议构建一个全新的P2P通讯下载软件,目前在android端没任何问题,ios端,根据不同机型,都出现下载500-1g内容后,闪退,经过分析,貌似是UTS底层机制出现了泄漏。所以上来求证一下。

要回复问题请先登录注册