Your environment is not being destroyed when you exit the function. You just need to return a reference to it.
funfun <- function(inc = 1){
dataEnv <- new.env(parent=globalenv())
dataEnv$d1 <- 1 + inc
dataEnv$d2 <- 2 + inc
dataEnv$d3 <- rnorm(10000)
return(dataEnv)
}
myEnv <- funfun()
object.size(myEnv)
Get some stuff out
head(myEnv$d3)