2 votes

Comment gérer d'énormes quantités de données pour une exécution simultanée (NSOperationQueue ou Blocks) ?

Je dois gérer d'énormes quantités de données en même temps. C'est pourquoi j'utilise Blocks ou NSOperationQueue. Tout fonctionne bien jusqu'à ce que la quantité de données à traiter dépasse la limite de mémoire. Il en résulte un crash instantané de l'application.

La raison en est que les paquets de données que je dois traiter font environ 100 Ko. Lorsque plus de 300-400 de ces opérations sont placées dans la file d'attente, la limite de mémoire est dépassée.

J'aimerais maintenant savoir comment vous gérez des problèmes similaires ? BTW : Je n'ai pas trouvé de moyen de limiter la taille de la file d'attente à moins d'ajouter des tâches synchronisées qui feront en sorte que la pile soit complétée avant de revenir.

Merci d'avance pour tout conseil.

1voto

quellish Points 5475

NSOperation est équivalent à peu près à ThreadPoolExecutor. Vous l'utilisez donc déjà. Si vous épuisez votre mémoire, votre méthode de concurrence n'est probablement pas le problème.

On dirait que vous accumulez 300 à 400 tâches (NSOperations ou blocs GCD) et que vous manquez de mémoire. avant vous les faites exécuter. Pourquoi ne pas les faire exécuter au fur et à mesure que vous les ajoutez ? C'est ce que sont les files d'attente NSOperationQueue et GCD. pour comme ThreadPoolExecutor.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X