В настоящее время я выполняю эксперимент по моделированию в R
с использованием стороннего пакета (пакет iRF
, но в принципе не имеет значения, что это за пакет), который, похоже, имеет утечку памяти. Небольшой пример, воспроизводящий проблему:
library(zeallot)
library(iRF)
simulate_data <- function() {
X <- matrix(runif(300 * 50), nrow = 300)
Y <- X[,1] + X[,2] + rnorm(nrow(X))
return(list(X = X, Y = Y))
}
for(i in 1:10) {
c(X, Y) %<-% simulate_data()
fit <- iRF(X, Y)
rm(fit)
gc()
}
Это использует чуть более 1 Гб оперативной памяти. В рассматриваемом пакете используется скомпилированный код C
, и, вероятно, там происходит утечка памяти; следовательно, я не могу прямо освободить память в R
. Вопрос в следующем: есть ли способ обойти эту утечку памяти, не перезапуская мой сеанс R? Я не уверен, имеет ли это смысл (я неосведомленный статистик), но есть ли какой-нибудь способ уничтожить ядерное оружие? все в мире C
, как если бы я сбросил сессию? Крайне неудобно, что если я хочу повторить эксперимент 1000 раз, мне придется перезагрузить R
или не хватить памяти.