Read the help page of gc(). You need to run it with reset=TRUE for the usage to drop back to original. i.e. gc(reset=TRUE). gc() on its own doesn't quite do what you think it would do.
Ernest Turro wrote: > Dear all, > > I have wrapped a C++ function in an R package. I allocate/deallocate > memory using C++ 'new' and 'delete'. In order to allow user > interrupts without memory leaks I've moved all the delete statements > required after an interrupt to a separate C++ function freeMemory(), > which is called using on.exit() just before the .C() call. > > I am concerned about the following. In square brackets you see R's > total virtual memory use (VIRT in `top`): > > 1) Load library and data [178MB] (if I run gc(), then [122MB]) > 2) Just before .C [223MB] > 3) Just before freeing memory [325MB] > 4) Just after freeing memory [288MB] > 5) After running gc() [230MB] > > So although the freeMemory function works (frees 37MB), R ends up > using 100MB more after the function call than before it. ls() only > returns the data object so no new objects have been added to the > workspace. > > Do any of you have any idea what could be eating this memory? > > Many thanks, > > Ernest > > PS: it is not practical to use R_alloc et al because C++ allocation/ > deallocation involves constructors/destructors and because the C++ > code is also compiled into a standalone binary (I would rather avoid > maintaining two separate versions). > > ______________________________________________ > R-devel@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel