Je voudrais savoir combien de RAM est utilisée par chacun de mes objets dans mon espace de travail actuel. Y a-t-il un moyen facile de faire ceci?Déterminer l'utilisation de la mémoire des objets?
Répondre
il y a quelque temps que j'ai gagné cette petite pépite de here:
sort(sapply(ls(),function(x){object.size(get(x))}))
il m'a bien servi
Vous pouvez essayer la fonction lsos()
de this question:
R> a <- rnorm(100)
R> b <- LETTERS
R> lsos()
Type Size Rows Columns
b character 1496 26 NA
a numeric 840 100 NA
R>
1. par taille d'objet
pour obtenir l'allocation de mémoire sur une base objet par objet , appeler object.size() et passe dans l'objet d'intérêt:
object.size(My_Data_Frame)
(sauf si l'argument transmis est un variable, il doit être cité, ou enveloppé d'autre dans un obtenir appel.) nom de la variable, puis omettez les guillemets,
vous pouvez parcourir votre espace de noms et obtenir la taille de tous les objets qu'elle contient, comme si :
for (itm in ls()) {
print(formatC(c(itm, object.size(get(itm))),
format="d",
big.mark=",",
width=30),
quote=F)
}
2. par type d'objet
pour obtenir l'utilisation de la mémoire pour votre espace de noms, par type d'objet, utilisez memory.profile()
memory.profile()
NULL symbol pairlist closure environment promise language
1 9434 183964 4125 1359 6963 49425
special builtin char logical integer double complex
173 1562 20652 7383 13212 4137 1
(Il y a une autre fonction , memory.size() mais j'ai entendu et lu que cela ne semble fonctionner que sur Windows. Il retourne juste une valeur en Mo; pour utiliser la mémoire maximale à tout moment de la session, utilisez memory.size (max = T)).
Cette question a été postée et a obtenu des réponses légitimes il y a tellement de temps, mais je veux vous faire connaître d'autres conseils utiles pour obtenir la taille d'un objet en utilisant une bibliothèque appelée gdata et sa fonction ll()
.
library(gdata)
ll() # return a dataframe that consists of a variable name as rownames, and class and size (in KB) as columns
subset(ll(), KB > 1000) # list of object that have over 1000 KB
ll()[order(ll()$KB),] # sort by the size (ascending)
- 1. Instantané des objets en mémoire
- 2. Objets de mémoire secondaire de mémoire principale
- 3. Surveillance de la consommation de mémoire par différents objets Java
- 4. C#: objets simples et complexes et utilisation de la mémoire
- 5. Comment supprimer les objets CoreData de la mémoire?
- 6. Effacement de grands champs de la mémoire dans des objets de longue durée
- 7. Organisation séquentielle des objets globaux/statiques en mémoire
- 8. Utilisation d'instructions SQL pour interroger des objets en mémoire
- 9. GC.Collect sur le segment de mémoire de la génération 2 et des objets volumineux
- 10. en essayant de stocker des objets java dans la mémoire contiguë
- 11. Java utilise toujours la mémoire système après désallocation des objets et récupération de place
- 12. Comment puis-je vérifier l'utilisation de la mémoire des objets dans iPython?
- 13. Comment faire pour déterminer la quantité de mémoire utilisée par le code non managé
- 14. Utilisation de la mémoire dans la R
- 15. Comment puis-je déterminer la quantité de mémoire mon programme occupe actuellement
- 16. Vue de la mémoire allouée
- 17. Comment déterminer d'où provient cette fuite de mémoire?
- 18. Comment traiter les objets statiques lors de la surcharge et de la suppression pour trouver des fuites de mémoire?
- 19. Surveillance des fichiers mappés de la mémoire Windows
- 20. Comment déterminer la disposition de la mémoire d'un processus dans Windows?
- 21. Utilisation de la mémoire IronPython
- 22. OCaml: Type Vérification des objets
- 23. Meilleure pratique pour nettoyer la mémoire des applications iPhone?
- 24. gestion de la mémoire iphone
- 25. Déterminer la configuration des solutions (Visual Studio)
- 26. Mesure de l'utilisation de la mémoire des pilotes de périphérique dans Windows
- 27. Débogage de la mémoire de l'iPhone
- 28. C#: utilisation de la mémoire d'un objet
- 29. Gestion des objets de méthode d'accès?
- 30. Comment déterminer l'empreinte de la mémoire JVM avec plusieurs processus sous Linux
aussi, si l'on veut la mémoire totale utilisée par une session R, on peut faire 'object.size (x = lapply (ls(), get))' et 'imprimer (object.size (x = lapply (ls(), get)), units = "Mb") ' – tflutre
Cette jolie petite bête m'a trompé, puisque j'avais quelque chose de grand appelé 'x' (indice: il semblait petit); voici un remplacement: 'sort (spply (mget (ls()), object.size))'. – petrelharp
@tflutre Ma compréhension est que ce genre de chose peut être trompeur car R est une copie à l'écriture. Si je prends some_list <- some_other_list, la taille de some_list est rapportée comme la même taille que some_other_list, mais si je ne lis que depuis some_list alors la mémoire est partagée. Quelqu'un peut-il confirmer si c'est correct? – savagent