Я хотел бы выяснить, сколько ОЗУ используется каждым из моих объектов внутри моей текущей рабочей области. Есть ли простой способ сделать это?
Определение использования памяти объектами?
Ответ 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)