我们有一个生产应用程序,并使用“ adb shell dumpsys meminfo”来测量内存。我们看到在使用此工具进行转储时内存正在不断增长。我们看到“未知”类别正在增长,并且从未下降。当我们连接调试器并执行JS内存快照时,我们看到在我们清理的地方内存正在下降。为了简化此操作,我们创建了一个简单的应用程序,可以在一个屏幕中分配和取消分配内存。在chrome调试器中,当我们取消分配时,我们会看到内存减少;但是在没有调试器的设备/仿真器中运行时,内存正在射击,即使我们取消分配,内存也不会减少。应用程序崩溃了。看来JavaScript GC从未运行过。请查看我们在下面发布的详细信息。由于这阻碍了我们的发布,我们恳请对此进行调查。为什么RN应用程序内存总是增加而应用程序崩溃?”
我正在运行简单的本机应用程序以了解内存使用情况。 当我使用chrome调试器检查内存时,它没有保留任何内存。但是当我使用adb sysdump检查内存时,jsthread不会释放内存。
我正在使用react-navigation在屏幕之间进行导航。我正在使用createStackNavigator方法。
我的组件名称是screenOne。该组件包含AddRecord方法以添加记录。一旦按下后退按钮,组件将被卸载,并将导航到HomeScreen。
SnapShot One-初始内存-主页屏幕页面
SnapShot Two-导航到screenOne组件。
SnapShot三-多次按下addRecord方法以增加内存。
但是当我执行adb shell dumpsys meminfo时-内存未释放。
答案 0 :(得分:0)
反应导航不会关闭屏幕。通过设计。如果您希望在屏幕外时进行清理,则可以附加onFocus和onBlur侦听器以为onScreen设置布尔状态,并在渲染器上键入该状态以在不显示屏幕时不显示任何内容。或使用其他导航系统。