内存泄漏和C包装器

时间:2018-07-13 12:13:37

标签: r memory-leaks

我目前正在使用sbrl库中的sbrl()函数。该功能可以完成任何监督统计学习算法的工作:获取数据并生成预测模型。

使用它时出现内存泄漏问题。

  • 如果我循环运行该函数,尽管我总是指向同一对象,但RAM会越来越多。
  • 最终,我的计算机将达到RAM极限并崩溃。
  • 致电gc()将无济于事。仅关闭R会话会释放内存。

下面是一个最小的可复制示例。应该注意系统的内存管理程序。

重要的是,据我所知,sbrl()函数调用了C代码,并且还使用了Rcpp。我想这与内存泄漏问题有关。

您知道如何强制释放内存吗?

配置:Windows 10,R 3.5.0(Rstudio或R.exe)

install.packages("sbrl")
library(sbrl)

# Getting / prepping data
data("tictactoe")

# Looping over sbrl
for (i in 1:1e3) {
  rules <- sbrl(
    tdata = tictactoe, iters=30000, pos_sign="1", 
    neg_sign="0", rule_minlen=1, rule_maxlen=3, 
    minsupport_pos=0.10, minsupport_neg=0.10, 
    lambda=10.0, eta=1.0, alpha=c(1,1), nchain=20
  )
  invisible(gc())
  cat("Rules object size in Mb:", object.size(rules)/1e6, "\n")
}

0 个答案:

没有答案