J'aimerais savoir combien RAM est utilisé par chacun de mes objets dans mon espace de travail actuel. Existe-t-il un moyen simple de le faire?
il y a quelque temps, j'ai volé cette petite pépite de ici :
sort( sapply(ls(),function(x){object.size(get(x))}))
ça m'a bien servi
1. par taille d'objet
pour obtenir l'allocation de mémoire sur objet par objet , appelez object.size () et transmettez l'objet de intérêt:
object.size(My_Data_Frame)
(sauf si l'argument passé est une variable, il doit être cité, ou bien être entouré d'un appel get .), puis omettez les guillemets,
vous pouvez parcourir votre espace de noms et obtenir la taille de tous les objets qu'il contient, comme ceci:
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 sous Windows. Il ne renvoie qu'une valeur en Mo Pour utiliser au maximum la mémoire à tout moment de la session, utilisez memory.size (max = T)).
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>
Cette question a été postée et a obtenu des réponses légitimes il y a si longtemps, mais je tiens à vous faire connaître d'autres astuces utiles pour obtenir la taille d'un objet à l'aide d'une bibliothèque appelée gdata et de sa ll()
une fonction.
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)