Пример системы подсчета ссылок в R v4 - PullRequest
0 голосов
/ 27 апреля 2020

Я пытаюсь понять, как система подсчета ссылок в R v4 улучшает использование памяти.

Согласно https://blog.revolutionanalytics.com/2019/12/preview-of-r-400.html

При удалении объект в R, он обычно освобождает связанную память обратно в операционную систему. Аналогично, если вы копируете объект с y <- x, R не выделит новую память для y, если x не будет позже изменен. Однако в текущих версиях R эта система выходит из строя, если имеется более двух ссылок на какой-либо блок памяти. Начиная с R 4.0.0, все ссылки будут подсчитаны

Если я правильно понимаю, если я добавлю z<-x, то новое место в памяти должно использоваться хотя бы для одного из этих объекты.

> sessionInfo()
R version 3.6.2 (2019-12-12)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 17134)

> x<-2
> tracemem(x)
[1] "<000001D961ADBEA8>"
> y<-x
> tracemem(y)
[1] "<000001D961ADBEA8>"
> z<-x
> tracemem(z)
[1] "<000001D961ADBEA8>"
> w<-x
> tracemem(w)
[1] "<000001D961ADBEA8>"

это не похоже на случай с R 3.6.2.

Может кто-нибудь привести пример, чтобы показать, как система подсчета ссылок в R v4 отличается от R v3?

...