Hi All, 

 

There is something I don't quite understand about R memory management. 

 

I have the following function

 

function (AdGroupId) 

{

  print(memory.size())

  channel <- odbcConnect("RDsn", uid = "xxxx", case = "tolower", pwd =
"xxxxxx")

  Tree1 <- sqlQuery(channel, "exec SelectAdgroups 111120,0", as.is =
c(FALSE, FALSE, FALSE, FALSE, TRUE))

  Tree2 <- sqlQuery(channel, "exec SelectAdgroups 200337,0", as.is =
c(FALSE, FALSE, FALSE, FALSE, TRUE))

  gc()

  print(memory.size())

  odbcClose(channel)

  rm(channel);rm(Tree1);rm(Tree2);

  gc()

  print(memory.size())

  return(NULL)

}

 

I ran the function twice and I got the following results:

 

> prop(1000)

[1] 11.0589

[1] 15.97034

[1] 13.43737

NULL

> prop(1000)

[1] 13.43737

[1] 17.97294

[1] 17.42295

NULL

 

As you can see the size of the memory is being increased with each call to
the function. When I call the function using apply the memory usage keeps
growing until I get out of memory error.

 

It was tested on 4 different environments:

R:  2.4.0  and 2.6.1

OS: WinXp 64/32

 

Any ideas? 

 

Thanks,

Yoni.

 

 


	[[alternative HTML version deleted]]

