我的应用程序仅包含一个主屏幕,并且应运行很长时间(在信息亭模式下,需要数周)。
过了一会儿,我注意到它由于内存增长而崩溃(它变成了大约500,000K)。 我开始研究此错误,并创建了该应用程序的简化版:它所做的一个组件是每500毫秒更改一次UI,并在一夜之间运行它。
我的组件代码:
import React, {useEffect, useState} from 'react';
import {StyleSheet, View, Text} from 'react-native';
let counter = 0;
const Home = ({
}) => {
// State
const [param1, setParam1] = useState(0);
const [param2, setParam2] = useState(0);
const [param3, setParam3] = useState(0);
const [param4, setParam4] = useState(0);
const [param5, setParam5] = useState(0);
const [param6, setParam6] = useState(0);
// Effects
useEffect(() => {
// <- component did mount + unmount equivalent
const interval = setInterval(() => {
counter += 1;
setParam1(counter)
setParam2(counter)
setParam3(counter)
setParam4(counter)
setParam5(counter)
setParam6(counter)
}, 500);
return () => {
clearInterval(interval)
};
}, []);
const connectivitySummary = () => {
return (
<View>
<Text>{param1}</Text>
<Text>{param2}</Text>
<Text>{param3}</Text>
<Text>{param4}</Text>
<Text>{param5}</Text>
<Text>{param6}</Text>
</View>
);
};
return (
<View style={{flex: 1}}>
<View>{connectivitySummary()}</View>
</View>
);
};
export default Home;
结果是: UI result
当我开始运行此应用程序时,内存使用量约为 46,000k 。
夜间运行后,内存使用量为 214,338K :
有人可以告诉我我想念什么吗?为什么发生这种巨大的内存增长?
关于setInterval:我知道setInterval会导致内存泄漏,但是GC希望将其清除(请检查Does JavaScript setInterval() method cause memory leak?)
原生版本:0.60.5
谢谢您的帮助!