J'utilise Archive :: Tar :: Streamed pour archiver un répertoire de 4 Go contenant de très petits fichiers de code source et quelques fichiers jar. J'utilise un système avec 4 Go de RAM et j'utilise Archive :: Tar :: Streamed parce que je ne veux pas que mon répertoire entier soit dans la mémoire car il en résulte une insuffisance de mémoire. Je lis les fichiers un par un à partir du répertoire de manière DFS en utilisant File :: Find et en l'écrivant dans le fichier tar en utilisant la méthode add dans Archive :: Tar :: Streamed. À un moment donné, un seul fichier réside dans la mémoire, même alors% MEM de mon processus Perl augmente progressivement. Il s'est élevé à 20%. Il n'y a pas de fichier dans mon répertoire de 800MB. J'ai deux questions ici 1) pourquoi% MEM augmente-t-il progressivement? 2) Pourquoi l'a-t-il monté jusqu'à 20%? Est-ce parce que Archive :: Tar ne libère pas la mémoire après avoir écrit le contenu dans le fichier tar?Pourquoi% MEM augmente-t-il graduellement même si j'utilise Archive :: Tar: Streamed?
3
A
Répondre
2
Il n'est pas normal que votre enveloppe de mémoire VSZ augmente lorsque vous traitez vos données de manière orientée flux, et plus encore pour RES (% MEM) qui devrait normalement se stabiliser dans votre type d'application.
Par conséquent, je suspecterais fortement que des références croisées aux données soient conservées (par exemple dans un hachage), ou (moins probable) que des références circulaires soient générées.
Voir ce post, "are there any tools for finding memory leaks in my perl program" pour obtenir des conseils sur le suivi des variables (que ce soit dans votre code ou dans le module que vous utilisez) pour agrandir l'enveloppe mémoire ou conserver les références croisées.
Questions connexes
- 1. Ruby: Créer une archive Tar gzippée
- 2. Comment conserver le bit setuid dans les archives tar avec Perl's Archive :: Tar?
- 3. Pourquoi la structure du répertoire tarball disparaît-elle lorsque j'utilise Perl's Archive :: Tar?
- 4. iPhone SDK: vitesse vs mem footprint
- 5. Script SQL Archive
- 6. Fichier écrasé avec tar
- 7. format de type archive utilisant XML
- 8. Comment créer une TarTask Ant pour cette commande tar?
- 9. image archive bande d'image VS
- 10. Mailing List Archive
- 11. Template Archive dans Wordpress
- 12. tar (sur Windows) une liste de fichiers dans C#
- 13. Comment extraire l'archive de ce script (en utilisant tar)
- 14. Quelle est l'application TAR la plus rapide?
- 15. Pourquoi "Le système ne trouve pas l'étiquette de lot spécifiée" est lancé même si l'étiquette existe?
- 16. Pourquoi un feu de liaison, même si la propriété liée ne change pas?
- 17. Pourquoi ScriptResource.axd est-il compressé, même si la compression IIS est désactivée?
- 18. Versioning d'une archive à clés persistantes?
- 19. Get UserName même si l'authentification Windows échoue
- 20. Comment extraire un fichier tar en Java?
- 21. unzip (zip, tar, tag.gz) fichiers avec ruby
- 22. aller à la piste, puis tar?
- 23. Comment puis-je archiver un répertoire dans Perl comme le fait le tar sous UNIX?
- 24. Pourquoi mon débogueur est-il si lent?
- 25. Dois-je me méfier de l'utilisation de boost :: archive?
- 26. Pourquoi exec-gtar bloque-t-il mon programme Perl?
- 27. Création d'une archive de tous les pots et sources jar pour un projet multi-module
- 28. pourquoi l'air d'adobe est si lent
- 29. Pourquoi mes accéléromètres réagissent-ils si lentement?
- 30. Pourquoi utiliser if-else si en C++?