Память не освобождается после удаления записей в реактивном родном списке - PullRequest
0 голосов
/ 18 июня 2019

Я попытался настроить простой реагирующий род 0.59.4 проект и столкнулся с некоторой проблемой утечки памяти. Поэтому я создал минималистичный пример для воспроизведения проблемы.

У меня есть плоский список реагирования и 2 кнопки. Первая кнопка устанавливает состояние реакции и заполняет массив, который должен отображать плоский список. Вторая кнопка устанавливает состояние в пустой массив, чтобы очистить плоский список. Мой плоский список отображает только несколько текстовых компонентов.


import React, {Component} from 'react';
import {Platform, StyleSheet, Text, View, Button, FlatList} from 'react-native';

export default class App extends Component<Props> {

  constructor() {
    super();

    this.state = {
      result: [],
    }
  }

  create() {
    let arr = [];


    for (let i = 0; i <= 5000; i++) {
      arr.push({text: "some text"});
    }

    this.setState({
      result: arr,
    });

    arr = null;
  }

  release() {
    this.setState({
      result: [],
    });
  }

  renderItem() {
    return <Text>entry</Text>;
  }

  render() {
    return (
      <View style={styles.container}>
        <View style={styles.inline}>
          <Button title="Create" onPress={this.create.bind(this)}></Button>
          <Button title="Release" onPress={this.release.bind(this)}></Button>
        </View>
        <FlatList
          data={this.state.result}
          renderItem={this.renderItem.bind(this)}
          keyExtractor={(item, index) => index.toString()}>
        </FlatList>
      </View>
    );
  }
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: 'center',
    alignItems: 'center',
    backgroundColor: '#F5FCFF',
  },
  inline: {
    display: 'flex',
    flexDirection: 'row',
  },
});

Я ожидаю, что использование памяти уменьшится после того, как я удалю записи в массиве до точки, в которой это было до заполнения плоского списка. Память освобождает только небольшое количество, но она складывается после многократного заполнения и очистки массива.

...