是一直上涨,不封顶的那样涨吗?
短期上涨可能是正常情况,因为可能还没有触发 gc 阈值。
如果确定是有内存泄露,麻烦提供一个复现 demo 供我们排查一下。谢谢。
是一直上涨,不封顶的那样涨吗?
短期上涨可能是正常情况,因为可能还没有触发 gc 阈值。
如果确定是有内存泄露,麻烦提供一个复现 demo 供我们排查一下。谢谢。
不封顶那种 挂一个晚上就能上涨1g 就是新建了一个工程里面放了两个label两个button
再android studio 里面profiler里面查看 Native会稳定增长
没有其他操作吗?没有切换场景,创建、销毁资源之类的操作吗?
如果只创建两个 label和button,理论上是静态的页面了,不应该出现持续增长不降的情况的。
没有的 甚至连脚本都没有
不确定是不是因为 sdk ndk gradle引起的

请问你是编译 debug 还是 release 版本?
性能、内存测试,尽量要用 release 版本验证。
另外, 可以用 Android Studio 的 Profile 功能定位一下是那部分的内存有增长,是 java heap,native,graphics 还是 unknown
debug版本 内存增长的是native 不会下降的
架构是 arm64-v8a armeabi-v7a x86
试试编译一个 release 版本 apk 看看。


我打了一个release包 然后这是就在界面上挂 内存在增长 才10分钟 native从22.x M增加到36.9M
没有脚本 运行没有报错
我们的测试环境是32位的雷电模拟器
那用真机验证看吧。不排除有可能是模拟器的问题。
测试过了 雷电模拟器4 雷电模拟器5 都是32位的 涨的是native增长速度比较快 真机会涨other涨的缓慢但还是上升
同样一个界面开着不动任何操作挂一小时
WebSocket好像也会让内存缓慢上涨
在 3.8.5 中修复,感谢反馈。
为啥这么加一句就好了,能不能告诉下我们,要知其然,也要知其所以然 
其实就是 jni 申请内存和释放内存要配对,否则就会导致泄露。
jbyte *array = env->GetByteArrayElements(static_cast<jbyteArray>(strongRef), &isCopy);
wsOkHttp3->onBinaryMessage(reinterpret_cast<uint8_t *>(array), len);
env->ReleaseByteArrayElements(static_cast<jbyteArray>(strongRef), array, JNI_ABORT);
GetByteArrayElements 和 ReleaseByteArrayElements 是一对。
原来如此 
这个 PR 中修复:
这个 PR 的问题是因为啥导致的,看着好像不是websocket的那个 
两个不同的问题。
这个是跟结构体对齐编译器自动padding有关,在 x86 架构上会有问题导致 hash 计算异常,进而导致 unordered_map 被频繁添加不同的元素而导致的内存泄露问题。
原来如此,希望以后类似这种修复能稍稍的讲解下为啥,虽然不是很懂,但稍稍讲解下为啥,心里也能稍微有个数了 