Dear Martin,
thank you for your hints. They were very helpful. Maybe memory.size() is a more
reasonable measure of memory consumption?
Here's a rough comparison of 10.000 instances of a reference class, an S3 class
and a simple vector:
Reference Class: 14MB
S3 class: 1,76MB
Vector: 0.08MB
So classes add some overhead but probably not as much as a simple saveRDS(...,
compress=F) suggests.
Which means that my memory problem is probably not related to Reference
Classes. I have not THAT many instances.
Best
Jan
The code I used to determine memory size:
# start new R session, empty workspace
untouched=memory.size();
MySmallClass = setRefClass("MySmallClass",
fields = list(
myField = "numeric"
),
methods = list(
initialize = function(f) {
myField<<- f;
})
);
o = lapply(rnorm(10000), MySmallClass$new)
withobj=memory.size()
print(paste("Initial Mem:", untouched, "With objects:", withobj, "Difference:",
round(withobj-untouched, 2)));
# Output: [1] "Initial Mem: 14 With objects: 28 Difference: 14"
# 35.988K process size in Windows Task Manager
# start new R session, empty workspace
untouched=memory.size();
agent <- function(myField) {
env = new.env(parent=emptyenv())
env[["myField"]] = myField
lockBinding("myField", env) ## 'private' data?
class(env) = "agent"
env
}
agents = lapply(rnorm(10000), agent)
withobj=memory.size()
print(paste("Initial Mem:", untouched, "With objects:", withobj, "Difference:",
round(withobj-untouched, 2)));
# [1] "Initial Mem: 14.05 With objects: 15.81 Difference: 1.76"
# 22.336K process size in Windows Task Manager
# start new R session, empty workspace
untouched=memory.size();
arr=rnorm(10000);
withobj=memory.size()
print(paste("Initial Mem:", untouched, "With objects:", withobj, "Difference:",
round(withobj-untouched, 2)));
# [1] "Initial Mem: 14.05 With objects: 14.13 Difference: 0.08"
# 20.780K process size in Windows Task Manager
______________________________________________
[email protected] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.