Używam funkcji blackboost z pakietu mboost do oszacowania modelu na około 500 MB danych w 64-bitowym 64-bitowym Windows 7-bitowym komputerze RAM. Podczas wykonywania R wykorzystuje praktycznie całą dostępną pamięć. Po wykonaniu obliczeń, ponad 4,5 gb zostaje przydzielone do R nawet po wywołaniu wywołania śmieci przy pomocy gc() lub zapisaniu i ponownym załadowaniu obszaru roboczego do nowej sesji R. Używając .ls.objects (1358003) Stwierdziłem, że rozmiar wszystkich widocznych obiektów wynosi około 550 MB.Jak usunąć niewidoczne obiekty z obszaru roboczego R, które nie są usuwane przez usuwanie śmieci?
Wyjście gc() mówi mi, że większość danych jest w komórkach wektor, choć nie jestem pewien, co to znaczy:
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 2856967 152.6 4418719 236.0 3933533 210.1
Vcells 526859527 4019.7 610311178 4656.4 558577920 4261.7
To, co robię:
> memory.size()
[1] 1443.99
> model <- blackboost(formula, data = mydata[mydata$var == 1,c(dv,ivs)],tree_control=ctree_control(maxdepth = 4))
... niektóre pakiety są ładowane ...
> memory.size()
[1] 4431.85
> print(object.size(model),units="Mb")
25.7 Mb
> memory.profile()
NULL symbol pairlist closure environment promise language
1 15895 826659 20395 4234 13694 248423
special builtin char logical integer double complex
174 1572 1197774 34286 84631 42071 28
character ... any list expression bytecode externalptr
228592 1 0 79877 1 51276 2182
weakref raw S4
413 417 4385
MYDATA [MYDATA $ var == 1, C (DV, IV)] zawiera 139593 wierszy i 75 Columa ns z większością zmiennych czynnikowych i pewnymi zmiennymi logicznymi lub liczbowymi. formuła jest obiektem formuły typu: "dv ~ var2 + var3 + .... + var73". dv to łańcuch nazw zmiennych i ivs to wektor łańcuchowy ze wszystkimi zmiennymi niezależnymi var2 ... var74.
Dlaczego tyle pamięci jest przydzielane do R? Jak mogę zwolnić R dodatkową pamięć? Wszelkie przemyślenia docenione!
Co robi raport "memory.size()"? – James
Może to być przeciek pamięci w kodzie. Czy możesz wkleić przykład funkcji, do której dzwonisz (z danymi demo)? – Spacedman
Co dokładnie masz na myśli przez "wyciek pamięci"? Dodałem do mojego pytania przykładowy kod. Jeśli potrzebujesz więcej informacji, daj mi znać. @James: Dodałem funkcję memory.size() przed i po funkcji blackboost do mojego pytania. – Nima