我们有一个生产应用程序,使用“adb shell dumpsys meminfo”来测量内存。我们发现在使用此工具时内存不断增长。我们发现未知类别正在增长并且从未下降。当我们附加调试器并执行JS内存快照时,我们看到在清理的地方内存下降了。为了简化这个问题,我们创建了一个简单的应用程序,在一个屏幕上分配和释放内存。在Chrome调试器中,我们看到释放内存时内存下降;但是在没有调试器的设备/模拟器上运行时,内存会飙升,并且即使我们释放内存,它也不会下降。在某些时候应用程序会崩溃。看起来JavaScript GC从未运行。请查看我们发布的详细信息。由于这阻碍了我们的发布,请您帮忙解决。为什么RN应用程序的内存总是增加,应用程序崩溃?
我正在运行一个简单的React Native应用程序以了解内存使用情况。当我使用Chrome调试器检查内存时,它不会保留任何内存。但是当我使用adb sysdump检查内存时,jsthread没有释放内存。
我正在使用react-navigation在屏幕之间进行导航。我正在使用createStackNavigator方法。
SnapShot Four - 返回到HomeScreen,内存已被释放。
但是当我执行adb shell dumpsys meminfo时,内存没有被释放。
初始-内存
添加记录-增加内存
回到主屏幕 - 不释放内存
我正在运行一个简单的React Native应用程序以了解内存使用情况。当我使用Chrome调试器检查内存时,它不会保留任何内存。但是当我使用adb sysdump检查内存时,jsthread没有释放内存。
我正在使用react-navigation在屏幕之间进行导航。我正在使用createStackNavigator方法。
我的组件名称是screenOne。该组件包含AddRecord方法以添加记录。一旦我按下返回按钮,组件将被卸载并导航到HomeScreen。
快照一 - 初始内存 - 主屏幕页面 快照二 - 导航到 screenOne 组件。 SnapShot Three - 多次按下addRecord方法以增加内存。![在此输入图片描述](https://istack.dev59.com/wYjMV.webp)
![在此输入图片描述](https://istack.dev59.com/abQ3w.webp)
初始-内存
![在此输入图片描述](https://istack.dev59.com/jhrgy.webp)
![在此输入图片描述](https://istack.dev59.com/y50wy.webp)
![在此输入图像描述](https://istack.dev59.com/PBUTC.webp)