React Native - Android - 内存无法释放

3
我们有一个生产应用程序,使用“adb shell dumpsys meminfo”来测量内存。我们发现在使用此工具时内存不断增长。我们发现未知类别正在增长并且从未下降。当我们附加调试器并执行JS内存快照时,我们看到在清理的地方内存下降了。为了简化这个问题,我们创建了一个简单的应用程序,在一个屏幕上分配和释放内存。在Chrome调试器中,我们看到释放内存时内存下降;但是在没有调试器的设备/模拟器上运行时,内存会飙升,并且即使我们释放内存,它也不会下降。在某些时候应用程序会崩溃。看起来JavaScript GC从未运行。请查看我们发布的详细信息。由于这阻碍了我们的发布,请您帮忙解决。为什么RN应用程序的内存总是增加,应用程序崩溃?
我正在运行一个简单的React Native应用程序以了解内存使用情况。当我使用Chrome调试器检查内存时,它不会保留任何内存。但是当我使用adb sysdump检查内存时,jsthread没有释放内存。
我正在使用react-navigation在屏幕之间进行导航。我正在使用createStackNavigator方法。

enter image description here

我的组件名称是screenOne。该组件包含AddRecord方法以添加记录。一旦我按下返回按钮,组件将被卸载并导航到HomeScreen。

enter image description here

快照一 - 初始内存 - 主屏幕页面

enter image description here

快照二 - 导航到 screenOne 组件。

enter image description here

SnapShot Three - 多次按下addRecord方法以增加内存。 在此输入图片描述 SnapShot Four - 返回到HomeScreen,内存已被释放。 在此输入图片描述 但是当我执行adb shell dumpsys meminfo时,内存没有被释放。
初始-内存 在此输入图片描述 添加记录-增加内存 在此输入图片描述 回到主屏幕 - 不释放内存 在此输入图像描述

我有同样的问题... - Timur Ridjanovic
我有同样的问题,顺便说一句使用一个页面状态增长内存。 - Tkk
1个回答

0

react-navigation在屏幕之间导航时不会关闭屏幕。这是设计上的。如果您想在屏幕离开屏幕时进行清理,可以附加onFocus和onBlur侦听器以设置一个布尔状态为onScreen,并在渲染中关键显示屏幕未显示时不显示任何内容。或者使用其他导航系统。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接