也许你可以gc()
根据observe
陈述与invalidateLater
?也许你可以限制每个会话的一些内存阈值或一些超时如果可以通过?您可以在下面看到您为每个会话记忆了多少内存。另外,也要看看你的任务管理器在这个过程中有多少需要在方法(注:目前例如需要每个会话约440Mb
)
rm(list = ls())
library(shiny)
cleanMem <- function(n=10) { for (i in 1:n) gc() }
runApp(list(
ui = fluidPage(
tableOutput('foo')
),
server = function(input, output,session) {
observe({
# periodically collect
invalidateLater(1000,session)
cleanMem()
})
x1 <- 1:100000000
x2 <- rbind(mtcars, mtcars)
env <- environment() # can use globalenv(), parent.frame(), etc
output$foo <- renderTable({
data.frame(
object = ls(env),
size = unlist(lapply(ls(env), function(x) {
object.size(get(x, envir = env, inherits = FALSE))
}))
)
})
}
))
这个答案是非常有用和示例工作完全一样我想我的代码通过释放工作up内存。但是,当我将示例应用于我的代码时,它不释放内存。我现在知道它应该如何工作,这是对我的理解,为什么它不是这样工作的!我会看看我是否可以在这里发布我的代码示例。 – rfguy