Zarezerwowana pamięć R jest dwa razy większa niż przydzielona tablica

Zauważyłem następujące zachowanie. Powiedz, że tworzę następującą wielowymiarową tablicę:

spam = array(runif(96*48*60*360), dim = c(96,48,60,360))

Jest całkiem przewidywalne, ile pamięci R powinno do tego wykorzystać, a mianowicie (96 * 48 * 60 * 360) * 4 bajty = 759,4 MB. Jest to dobrze potwierdzone za pomocąlsos funkcja (patrzten post):

> lsos()
         Type      Size PrettySize Rows Columns
spam    array 796262520   759.4 Mb   96      48
lsos function       776  776 bytes   NA      NA

R jako proces wykorzystuje jednak znacznie więcej pamięci, mniej więcej dwa razy więcej:

$ top | grep rsession
82:17628 hiemstra  20   0 1614m **1.5g** 8996 S  0.3 40.4   0:04.85 rsession  

Dlaczego R to robi? Zakładam, że dodatkowa pamięć zarezerwowana jest przydzielona, ​​aby była ona szybciej dostępna dla R? Jakieś pomysły?

questionAnswers(1)

yourAnswerToTheQuestion