-
Fuite mémoire
Bonjour à tous,
Je suis en train d'éditer une base de données avec la librairie RSQLite.
Pour ce faire, je remplis 2 tables avec des données stockées sur mon ordi dans une boucle for.
Tout se passe bien jusqu'à un "FATAL ERROR" qui m'oblige à redémarrer R.
En fait pendant l’exécution du programme, je constate la montée en flèche du processus "rsession".
Qui atteint allègrement les 500 mo !
Ma question est la suivante:
Est-il possible d'empêcher cela ?
Je suis ouvert à toute proposition...
-
Bonjour,
Je t'apporterais deux réponses.
Si la fuite mémoire vient du package, à moins de reprogrammer celui-ci en isolant les fonctions qui posent problème, je ne vois pas trop de solutions. Personnellement j'utilise PostgreSQL et je n'ai jamais eu de difficulté avec le package lié à cette base. Je te dis cela dans le cas où tu souhaites changer de base de données pour travailler.
La fuite mémoire vient peut-être de ton script, mais dans ce cas on ne peut t'aider sans une partie de ton code.
Bien cordialement.
-
Merci pour votre réponse.
Ce qui est curieux c'est que même en commentant toutes les instructions de ma boucle,
je constate que la progression en mémoire du processus rsession augmente moins vite certes,
mais augmente quand même!
C'est pourquoi je cherche plutôt le moyen de vider la mémoire de travail.
-
La fonction rm permet de supprimer un objet. La fonction gc (garbage collector) permet de libérer de la mémoire.
Cela dit, avant de te prendre la tête, ça ne te serrait pas plus simple d'augmenter la mémoire maximale de R ? (à 1,5 Go sur un OS 32 bit et à autant que la RAM de ta machine sur un OS 64 bits).
-
Merci Theta,
J'ai déjà tenté de faire un rm() de mes objets (data.frame) sans succès.
La fonction gc (garbage collector) semble être la solution idéale à mon problème.
Quant à augmenter la taille de ma mémoire, pas besoin;
Je tourne avec une vieille bécane estampillée W7 32 bits dotée de 1,5 Go de RAM.
Le process monte jusqu'à 1,3 Go donc je pense qu'il est déjà au max