内存增长反应本机

时间:2019-09-16 13:29:28

标签: javascript android react-native

我的应用程序仅包含一个主屏幕,并且应运行很长时间(在信息亭模式下,需要数周)。

过了一会儿,我注意到它由于内存增长而崩溃(它变成了大约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

My app name is Check

有人可以告诉我我想念什么吗?为什么发生这种巨大的内存增长?

关于setInterval:我知道setInterval会导致内存泄漏,但是GC希望将其清除(请检查Does JavaScript setInterval() method cause memory leak?

原生版本:0.60.5

谢谢您的帮助!

0 个答案:

没有答案