Определение использования памяти объектами?

Я хотел бы выяснить, сколько ОЗУ используется каждым из моих объектов внутри моей текущей рабочей области. Есть ли простой способ сделать это?

Ответ 1

некоторое время назад я украл этот маленький самородок из здесь:

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

он хорошо меня обслуживал

Ответ 2

1. по размеру объекта

чтобы получить распределение памяти на основе объекта за объектом, вызовите object.size() и передайте объект, представляющий интерес:

object.size(My_Data_Frame)

(если аргумент не передан в переменную, он должен быть кавычками или завершен в вызове get.), а затем опустить кавычки

вы можете пропустить свое пространство имен и получить размер всех объектов в нем:

for (itm in ls()) { 
    print(formatC(c(itm, object.size(get(itm))), 
        format="d", 
        big.mark=",", 
        width=30), 
        quote=F)
}

2. по типу объекта

чтобы получить использование памяти для вашего пространства имен, по типу объекта, используйте 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 

(Есть еще одна функция memory.size(), но я слышал и читал, что она работает только в Windows. Она просто возвращает значение в MB, поэтому, чтобы получить максимальную память, используемую в любое время в сеансе, используйте memory.size(макс = Т)).

Ответ 3

Вы можете попробовать lsos() функцию этот вопрос:

R> a <- rnorm(100)
R> b <- LETTERS
R> lsos()
       Type Size Rows Columns
b character 1496   26      NA
a   numeric  840  100      NA
R> 

Ответ 4

Этот вопрос был опубликован и получил законные ответы так много, но я хочу сообщить вам еще один полезный совет, чтобы получить размер объекта с помощью библиотеки gdata и его 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)