[Rd] Memory leak during instantiation of a reference class?
Sander Maijers
S.N.Maijers at student.ru.nl
Tue Jun 5 15:03:43 CEST 2012
Hi,
I have a problem with a large data set wrapped in a reference class. I do that to access the data by reference from within various functions in a script.
# The class definition:
setRefClass("data",
fields = list(h5_df = "list",
training_data = "array",
true_class = "vector"));
# The class instantiation:
data_1 <- new("data",
h5_df = as.list(h5_df),
training_data = training_data,
true_class = true_class);
The objects assigned to the "data" fields during instantiation:
Browse[1]> str(training_data)
num [1:501, 1:62, 1:579] -10.4 -11.3 -12.1 -12.8 -13.3 ...
- attr(*, "dimnames")=List of 3
..$ : NULL
..$ : NULL
..$ : NULL
Browse[1]> str(true_class)
num [1:1002] 1 1 1 1 1 1 1 1 1 1 ...
Browse[1]> str(h5_df)
Dotted pair list of 11
$ avg.txt.lp :Garbage collection 135 = 44+18+73 (level 2) ...
49.4 Mbytes of cons cells used (63%)
2840.0 Mbytes of vectors used (30%)
num [1:501, 1:62, 1:607] -10.4 -11.3 -12.1 -12.8 -13.3 ...
$ avg.tls.txt.lp: num [1:501, 1:62, 1:281] -10.4 -11.3 -12.1 -12.8 -13.3 ...
$ avg.tls.pic.lp: num [1:501, 1:62, 1:305] -2.81 -4.95 -6.98 -8.79 -10.32 ...
$ avg.tls.lp : num [1:501, 1:62, 1:884] -10.4 -11.3 -12.1 -12.8 -13.3 ...
$ avg.tls.aud.lp: num [1:501, 1:62, 1:298] -13.9 -11.36 -8.91 -6.61 -4.55 ...
$ avg.pic.lp : num [1:501, 1:62, 1:653] -2.81 -4.95 -6.98 -8.79 -10.32 ...
$ avg.aud.lp : num [1:501, 1:62, 1:662] -13.9 -11.36 -8.91 -6.61 -4.55 ...
$ avg.anm.txt.lp: num [1:501, 1:62, 1:273] -3.37 -2.96 -2.59 -2.27 -2 ...
$ avg.anm.pic.lp: num [1:501, 1:62, 1:285] 11.7 12.3 12.8 13.2 13.5 ...
$ avg.anm.lp : num [1:501, 1:62, 1:855] -3.37 -2.96 -2.59 -2.27 -2 ...
$ avg.anm.aud.lp:Garbage collection 136 = 44+18+74 (level 2) ...
49.4 Mbytes of cons cells used (63%)
2980.8 Mbytes of vectors used (32%)
num [1:501, 1:62, 1:297] -13.57 -11.96 -10.36 -8.77 -7.2 ...
The procedure that gives rise to the problem:
> rm(list=ls())
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 921231 49.2 1476915 78.9 1166886 62.4
Vcells 792872 6.1 565291490 4312.9 690075184 5264.9
> load_data()
Processing object: avg_anm_aud_lp ...... its a dataset...Dataset has ID83886080
Dataset has tid 50332028
Dataset has space id 67108866
Dataset has rank 3
Dataset has dims/maxdims: 501 62 297 / 501 62 297
501 62 297 Tidying name avg_anm_aud_lp .. to avg.anm.aud.lp
...Finished dataset
Processing object: avg_anm_lp ...... its a dataset...Dataset has ID83886080
Dataset has tid 50332031
Dataset has space id 67108866
Dataset has rank 3
Dataset has dims/maxdims: 501 62 855 / 501 62 855
501 62 855 Tidying name avg_anm_lp .. to avg.anm.lp
...Finished dataset
Processing object: avg_anm_pic_lp ...... its a dataset...Dataset has ID83886080
Dataset has tid 50332034
Dataset has space id 67108866
Dataset has rank 3
Dataset has dims/maxdims: 501 62 285 / 501 62 285
501 62 285 Tidying name avg_anm_pic_lp .. to avg.anm.pic.lp
...Finished dataset
Processing object: avg_anm_txt_lp ...... its a dataset...Dataset has ID83886080
Dataset has tid 50332037
Dataset has space id 67108866
Dataset has rank 3
Dataset has dims/maxdims: 501 62 273 / 501 62 273
501 62 273 Tidying name avg_anm_txt_lp .. to avg.anm.txt.lp
...Finished dataset
Processing object: avg_aud_lp ...... its a dataset...Dataset has ID83886080
Dataset has tid 50332040
Dataset has space id 67108866
Dataset has rank 3
Dataset has dims/maxdims: 501 62 662 / 501 62 662
501 62 662 Tidying name avg_aud_lp .. to avg.aud.lp
...Finished dataset
Processing object: avg_pic_lp ...... its a dataset...Dataset has ID83886080
Dataset has tid 50332043
Dataset has space id 67108866
Dataset has rank 3
Dataset has dims/maxdims: 501 62 653 / 501 62 653
501 62 653 Tidying name avg_pic_lp .. to avg.pic.lp
...Finished dataset
Processing object: avg_tls_aud_lp ...... its a dataset...Dataset has ID83886080
Dataset has tid 50332046
Dataset has space id 67108866
Dataset has rank 3
Dataset has dims/maxdims: 501 62 298 / 501 62 298
501 62 298 Tidying name avg_tls_aud_lp .. to avg.tls.aud.lp
...Finished dataset
Processing object: avg_tls_lp ...... its a dataset...Dataset has ID83886080
Dataset has tid 50332049
Dataset has space id 67108866
Dataset has rank 3
Dataset has dims/maxdims: 501 62 884 / 501 62 884
501 62 884 Tidying name avg_tls_lp .. to avg.tls.lp
...Finished dataset
Processing object: avg_tls_pic_lp ...... its a dataset...Dataset has ID83886080
Dataset has tid 50332052
Dataset has space id 67108866
Dataset has rank 3
Dataset has dims/maxdims: 501 62 305 / 501 62 305
501 62 305 Tidying name avg_tls_pic_lp .. to avg.tls.pic.lp
...Finished dataset
Processing object: avg_tls_txt_lp ...... its a dataset...Dataset has ID83886080
Dataset has tid 50332055
Dataset has space id 67108866
Dataset has rank 3
Dataset has dims/maxdims: 501 62 281 / 501 62 281
501 62 281 Tidying name avg_tls_txt_lp .. to avg.tls.txt.lp
...Finished dataset
Processing object: avg_txt_lp ...... its a dataset...Dataset has ID83886080
Dataset has tid 50332058
Dataset has space id 67108866
Dataset has rank 3
Dataset has dims/maxdims: 501 62 607 / 501 62 607
501 62 607 Tidying name avg_txt_lp .. to avg.txt.lp
...Finished dataset
Garbage collection 118 = 44+17+57 (level 0) ...
49.4 Mbytes of cons cells used (63%)
2277.9 Mbytes of vectors used (53%)
Called from: load_data()
Browse[1]> str(data_1)
Garbage collection 119 = 44+18+57 (level 1) ...
49.4 Mbytes of cons cells used (63%)
4119.7 Mbytes of vectors used (96%)
Reference class 'data' [package ".GlobalEnv"] with 3 fields
Garbage collection 120 = 44+18+58 (level 2) ...
49.3 Mbytes of cons cells used (62%)
4256.9 Mbytes of vectors used (92%)
Garbage collection 121 = 44+18+59 (level 2) ...
49.3 Mbytes of cons cells used (62%)
4539.6 Mbytes of vectors used (91%)
Garbage collection 122 = 44+18+60 (level 2) ...
49.3 Mbytes of cons cells used (62%)
4974.5 Mbytes of vectors used (92%)
Garbage collection 123 = 44+18+61 (level 2) ...
49.3 Mbytes of cons cells used (62%)
5263.6 Mbytes of vectors used (92%)
Garbage collection 124 = 44+18+62 (level 2) ...
49.3 Mbytes of cons cells used (62%)
5673.9 Mbytes of vectors used (93%)
Garbage collection 125 = 44+18+63 (level 2) ...
49.3 Mbytes of cons cells used (62%)
5956.6 Mbytes of vectors used (92%)
Garbage collection 126 = 44+18+64 (level 2) ...
49.3 Mbytes of cons cells used (62%)
6391.4 Mbytes of vectors used (93%)
Garbage collection 127 = 44+18+65 (level 2) ...
49.3 Mbytes of cons cells used (62%)
6680.6 Mbytes of vectors used (92%)
Garbage collection 128 = 44+18+66 (level 2) ...
49.3 Mbytes of cons cells used (62%)
5673.9 Mbytes of vectors used (75%)
Garbage collection 129 = 44+18+67 (level 2) ...
49.3 Mbytes of cons cells used (62%)
7583.0 Mbytes of vectors used (94%)
Garbage collection 130 = 44+18+68 (level 2) ...
49.3 Mbytes of cons cells used (62%)
8030.0 Mbytes of vectors used (94%)
Garbage collection 131 = 44+18+69 (level 2) ...
49.3 Mbytes of cons cells used (62%)
8370.5 Mbytes of vectors used (94%)
Garbage collection 132 = 44+18+70 (level 2) ...
49.3 Mbytes of cons cells used (62%)
7373.5 Mbytes of vectors used (79%)
$ h5_df :Garbage collection 133 = 44+18+71 (level 2) ...
49.3 Mbytes of cons cells used (62%)
9070.6 Mbytes of vectors used (92%)
Error: cannot allocate vector of size 154.8 Mb
Garbage collection 134 = 44+18+72 (level 2) ...
49.3 Mbytes of cons cells used (62%)
9070.6 Mbytes of vectors used (92%)
Error during wrapup: cannot allocate vector of size 143.8 Mb
The computer system that runs this code is has a 64-bit CPU and 12 GiB RAM.
It seems that there is a memory leak somewhere. Any suggestions on how to solve this problem?
Regards,
Sander Maijers
More information about the R-devel
mailing list