195 votes

Déterminer l'utilisation de la mémoire des objets?

J'aimerais déterminer la quantité de RAM utilisée par chacun de mes objets dans mon espace de travail actuel. Y a-t-il un moyen facile de faire ceci?

262voto

JD Long Points 20477

il y a quelque temps, j'ai volé cette petite pépite d' ici :

 sort( sapply(ls(),function(x){object.size(get(x))}))
 

ça m'a bien servi

61voto

doug Points 29567

1. par la taille de l'objet

pour obtenir l'allocation de mémoire sur un objet-par-objet de base, à l'appel de l'objet.taille() et passe dans l'objet de l'intérêt:

object.size(My_Data_Frame)

(sauf si l'argument passé est une variable, il doit être cité, ou bien enveloppé dans un obtenir de l' appel.)nom de la variable, puis omettre les guillemets,

vous pouvez faire une boucle par le biais de votre espace de noms et d'obtenir la taille de tous les objets, comme:

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 de votre espace de noms, par type d'objet, l'utilisation de la mémoire.profil du (de la)

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, la mémoire.size() mais j'ai entendu et lu qu'il ne semble fonctionner sur Windows. Elle retourne une valeur en MO; afin d'obtenir un max de mémoire utilisée à tout moment de la session, l'utilisation de la mémoire.taille(max=T)).

24voto

Dirk Eddelbuettel Points 134700

Vous pouvez essayer la fonction lsos() de cette 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>
 

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