M
Membre supprimé 2
Invité
bonjour,
j'ai besoin d'effectuer une opération une bonne centaine de milliers de fois, une simple boucle "for" me suffirait.
malheureusement, j'ai un gros problème qui apparait lors des essayages: la libération de la mémoire des objets n'est pas immédiate et n'intervient qu'en fin de boucle, vu le nombre d'objets élevés créés, ça plante: MacOS X consomme toute sa mémoire puis sa mémoire virtuelle sur disque et paf!
Pour illustrer mes propos, voici un exemple tout bête:
for(i=0;i<1000000;i++)
{
myString = [[NSString alloc] initWithString:@"une phrase toute simple."];
[myString release];
}
avec l'outil ObjectAlloc, c'est assez flagrant qu'il va exister un millions d'objets NSString qui ne se détruiront qu'après la fin de la boucle.
et un "top" dans le Terminal pendant l'exécution inquiète sérieusement en voyant la mémoire libre descendre puis paginer à fond.
Contrairement à cet exemple, dans la boucle "for" de mon usage final, il n'y a pas bien entendu qu'un simple NSString, mais pleins d'autres objets, j'aimerais les détruire avant chaque réexécution de ma boucle, sous peine de n'avoir pas assez de mémoire pour le nombre de fois souhaité...
Toutes aides ou idées sont bienvenues.
j'ai besoin d'effectuer une opération une bonne centaine de milliers de fois, une simple boucle "for" me suffirait.
malheureusement, j'ai un gros problème qui apparait lors des essayages: la libération de la mémoire des objets n'est pas immédiate et n'intervient qu'en fin de boucle, vu le nombre d'objets élevés créés, ça plante: MacOS X consomme toute sa mémoire puis sa mémoire virtuelle sur disque et paf!
Pour illustrer mes propos, voici un exemple tout bête:
for(i=0;i<1000000;i++)
{
myString = [[NSString alloc] initWithString:@"une phrase toute simple."];
[myString release];
}
avec l'outil ObjectAlloc, c'est assez flagrant qu'il va exister un millions d'objets NSString qui ne se détruiront qu'après la fin de la boucle.
et un "top" dans le Terminal pendant l'exécution inquiète sérieusement en voyant la mémoire libre descendre puis paginer à fond.
Contrairement à cet exemple, dans la boucle "for" de mon usage final, il n'y a pas bien entendu qu'un simple NSString, mais pleins d'autres objets, j'aimerais les détruire avant chaque réexécution de ma boucle, sous peine de n'avoir pas assez de mémoire pour le nombre de fois souhaité...
Toutes aides ou idées sont bienvenues.