現在のワークスペース内の各オブジェクトがどれだけRAMを使用しているかを調べたい。これを行う簡単な方法はありますか?
1。オブジェクトサイズ
object-by-objectベースでメモリ割り当てを取得するには、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でのみ動作するようです) ;そのため、セッションの任意の時点で使用される最大メモリを取得するには、memory.size(max = T))を使用します。
この質問 から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>
この質問はかなり前に投稿され、正当な回答を得ましたが、 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)