c***@vip.qq.com
c***@vip.qq.com
  • 发布:2020-08-05 02:50
  • 更新:2020-08-05 15:35
  • 阅读:1009

【报Bug】原生安卓对象js端无法释放造成内存泄露

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: win10

HBuilderX类型: 正式

HBuilderX版本号: 2.8.3

手机系统: Android

手机系统版本号: Android 10

手机厂商: 小米

手机机型: mix3

页面类型: vue

打包方式: 离线

项目创建方式: HBuilderX

操作步骤:

导入原生java类 js创建原生java类 然后获取类的uuid 再释放掉变量 但是还是可以通过uuid去操作 类并没有真正释放掉

预期结果:

释放掉超过预期的原生变量

实际结果:

没有释放

bug描述:

我是本地离线打包的 自己写了个java对象 通过 plus.android.import 引入 在js里面直接调用java 并且交互


var uuid="";  
function aa(){  
    var node=acc.getnode()  
    console.log(node);  
    uuid=node.__UUID__;  
    plus.android.autoCollection(node);  

}  
aa();  
console.log(window.plus.bridge.execSync2('Invocation', '__exec', [uuid, 'getChildCount', ""], null, true));  

函数里面的node是一个android原生对象 当超过作用域,并且调用了释放函数 但是 我在函数外面 通过uuid的方法 还是可以操作这个变量,
理论上超过作用域会自动释放 但是实际上并没有 一直保存在plus里面,造成一个内存溢出

我项目是在后台长期运行 会产生大量长文本类型的字符串,运行久了以后 会因为内存溢出 被系统自动重启

请问如何释放掉所有不需要的变量

2020-08-05 02:50 负责人:无 分享
已邀请:
DCloud_Android_ST

DCloud_Android_ST

页面关闭后会收回相关资源对象。并不是内存泄漏。只是回收时机是页面关闭。下个版本会提升autoCollection回收的响应时机。

该问题目前已经被锁定, 无法添加新回复