I use some variables, but when it is used, I never need it again, so I need to remove it and release the memory, but the function rm() seems not help:
memory.size() 30.69 tmp=matrix(rnorm(6e5*20),6e5,20) memory.size() 207.64 rm(tmp) memory.size() 207.64
Does it mean that I remove the tmp but the memory is not released?
rm() function in R Language is used to delete objects from the workspace. It can be used with ls() function to delete all objects. remove() function is also similar to rm() function.
GC automatically releases memory when an object is no longer used. It does this by tracking how many names point to each object, and when there are no names pointing to an object, it deletes that object. Despite what you might have read elsewhere, there's never any need to call gc() yourself.
Go to Tools -> Memory and uncheck Show Current Memory Usage.
You can find out the current memory consumption (the heap and cons cells used as numbers and megabytes) by typing gc() at the R prompt.
I use gc()
to free up RAM between operations. Below is example of how I use it in a loop, but see here for a more detailed discussion of gc()
and here for more on memory management during an R session.
# load library library(topicmodels) # get data data("AssociatedPress")) # set number of topics to start with k <- 20 # set model options control_LDA_VEM <- list(estimate.alpha = TRUE, alpha = 50/k, estimate.beta = TRUE, verbose = 0, prefix = tempfile(), save = 0, keep = 0, seed = as.integer(100), nstart = 1, best = TRUE, var = list(iter.max = 10, tol = 10^-6), em = list(iter.max = 10, tol = 10^-4), initialize = "random") # create the sequence that stores the number of topics to # iterate over sequ <- seq(20, 300, by = 20) # basic loop to iterate over different topic numbers with gc # after each run to empty out RAM lda <- vector(mode='list', length = length(sequ)) for(k in sequ) { lda[[k]] <- LDA(AssociatedPress[1:20,], k, method= "VEM", control = control_LDA_VEM) gc() # here's where I put the garbage collection to free up memory before the next round of the loop } # convert list output to dataframe (suggestions for a simpler method are welcome!) best.model.logLik <- data.frame(logLik = as.matrix(lapply(lda[sequ], logLik)), ntopic = sequ) # plot with(best.model.logLik, plot(ntopic, logLik, type = 'l', xlab="Number of topics", ylab="Log likelihood"))
# print ordered dataframe to see which number of topics has the highest log likelihood (best.model.logLik.sort <- best.model.logLik[order(-as.numeric(best.model.logLik$logLik)), ]) logLik ntopic 2 -17904.12 40 3 -18105.48 60 1 -18181.84 20 4 -18569.7 80 5 -19736.94 100 6 -21919.6 120 7 -23785.08 140 8 -24914.23 160 9 -25493.76 180 10 -25837.64 200 11 -25964.23 220 12 -26061.01 240 13 -26117.92 260 14 -26149.44 280 15 -26168.91 300
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With