Status fields:
| creation_ts: | 2012-04-27 23:34 | 
|---|---|
| component: | vm | 
| version: | unspecified | 
| rep_platform: | All | 
| op_sys: | Linux | 
| bug_status: | RESOLVED | 
| resolution: | WONTFIX | 
| reporter: | werner-schmidt@schmidt-bachgau.de | 
I am currently running some evalution tests for openjdk6 on ARM embedded boards (using a
beaglebone for evaluation).
For checking the garbage collector I ran the 'GCTest', which can be found at:
http://www.herongyang.com/JVM/GC-Garbage-Collection-Test-Program.html with the command
line:
java -<jvm> -Xms2m -Xmx8m GCTest 16 1
using jamvm or zero does not show any pecularities but when I used cacao I always get
output as follows:
java -cacao -Xms2m -Xmx8m GCTest 16 1
Time   Total   Free   Free   Total   Act.   Dead   Over
sec.    Mem.   Mem.   Per.    Obj.   Obj.   Obj.   Head
0   2048   1572   76%   0   0   0   476
0   2048   1436   70%   128   128   0   484
1   2048   1304   63%   256   256   0   488
1   2048   1172   57%   384   384   0   492
2   2048   1040   50%   512   512   0   496
2   2048   908   44%   640   640   0   500
3   2048   776   37%   768   768   0   504
3   2048   644   31%   896   896   0   508
4   2048   512   25%   1024   1024   0   512
4   2048   380   18%   1152   1152   0   516
5   2048   248   12%   1280   1280   0   520
5   2048   116   5%   1408   1408   0   524
6   2860   892   31%   1536   1536   0   432
6   2860   760   26%   1664   1664   0   436
7   2860   628   21%   1792   1792   0   440
7   2860   496   17%   1920   1920   0   444
8   2860   364   12%   2048   2048   0   448
8   3944   1316   33%   2176   2176   0   452
9   3944   1316   33%   2176   2048   128   452
9   3944   1184   30%   2304   2176   128   456
10   3944   1184   30%   2304   2048   256   456
10   3944   1052   26%   2432   2176   256   460
11   3944   1052   26%   2432   2048   384   460
11   3944   920   23%   2560   2176   384   464
12   3944   920   23%   2560   2048   512   464
12   3944   788   19%   2688   2176   512   468
13   3944   788   19%   2688   2048   640   468
13   3944   656   16%   2816   2176   640   472
14   3944   656   16%   2816   2048   768   472
14   3944   524   13%   2944   2176   768   476
15   3944   524   13%   2944   2048   896   476
15   3944   388   9%   3072   2176   896   484
16   3944   388   9%   3072   2048   1024   484
16   3944   256   6%   3200   2176   1024   488
17   3944   256   6%   3200   2048   1152   488
17   5388   1568   29%   3328   2176   1152   492
18   5388   1568   29%   2176   2048   128   1644
18   5388   1436   26%   2304   2176   128   1648
19   5388   1436   26%   2304   2048   256   1648
19   5388   1304   24%   2432   2176   256   1652
20   5388   1304   24%   2432   2048   384   1652
20   5388   1172   21%   2560   2176   384   1656
21   5388   1172   21%   2560   2048   512   1656
21   5388   1040   19%   2688   2176   512   1660
22   5388   1040   19%   2688   2048   640   1660
23   5388   908   16%   2816   2176   640   1664
23   5388   908   16%   2816   2048   768   1664
24   5388   776   14%   2944   2176   768   1668
24   5388   776   14%   2944   2048   896   1668
25   5388   644   11%   3072   2176   896   1672
25   5388   644   11%   3072   2048   1024   1672
26   5388   512   9%   3200   2176   1024   1676
26   5388   512   9%   3200   2048   1152   1676
27   5388   380   7%   3328   2176   1152   1680
27   5388   380   7%   3328   2048   1280   1680
28   5388   248   4%   3456   2176   1280   1684
28   5388   248   4%   3456   2048   1408   1684
29   5388   512   9%   3584   2176   1408   1292
29   5388   512   9%   3584   2048   1536   1292
30   5388   380   7%   3712   2176   1536   1296
30   5388   380   7%   3712   2048   1664   1296
31   5388   248   4%   3840   2176   1664   1300
31   5388   248   4%   3840   2048   1792   1300
32   7316   2044   27%   3968   2176   1792   1304
33   7316   1912   26%   4096   2176   1920   1308
33   7316   1912   26%   4096   2048   2048   1308
34   7316   1780   24%   4224   2176   2048   1312
34   7316   1780   24%   4224   2048   2176   1312
35   7316   1648   22%   4352   2176   2176   1316
35   7316   1648   22%   4352   2048   2304   1316
36   7316   1516   20%   4480   2176   2304   1320
36   7316   1516   20%   4480   2048   2432   1320
37   7316   1384   18%   4608   2176   2432   1324
37   7316   1384   18%   4608   2048   2560   1324
38   7316   1252   17%   4736   2176   2560   1328
38   7316   1252   17%   4736   2048   2688   1328
39   7316   1120   15%   4864   2176   2688   1332
39   7316   1120   15%   4864   2048   2816   1332
40   7316   988   13%   4992   2176   2816   1336
40   7316   988   13%   4992   2048   2944   1336
41   7316   856   11%   5120   2176   2944   1340
41   7316   856   11%   5120   2048   3072   1340
42   7316   720   9%   5248   2176   3072   1348
42   7316   720   9%   5248   2048   3200   1348
43   7316   588   8%   5376   2176   3200   1352
43   7316   588   8%   5376   2048   3328   1352
44   7316   456   6%   5504   2176   3328   1356
44   7316   456   6%   5504   2048   3456   1356
45   7580   588   7%   5632   2176   3456   1360
45   7580   588   7%   5632   2048   3584   1360
46   7712   588   7%   5760   2176   3584   1364
46   7712   588   7%   5760   2048   3712   1364
47   7844   588   7%   5888   2176   3712   1368
47   7844   588   7%   5888   2048   3840   1368
48   7976   588   7%   6016   2176   3840   1372
48   7976   588   7%   6016   2048   3968   1372
49   8108   588   7%   6144   2176   3968   1376
49   8108   588   7%   6144   2048   4096   1376
then the app crashes with:
Exception in thread "main" java.lang.OutOfMemoryError
        at GCTest$MyObject.<init>(GCTest.java:54)
        at GCTest.myTest(GCTest.java:31)
        at GCTest.main(GCTest.java:21)
This behaviour happens both on the Angstrom build and  the Ubuntu 11.10 build of the
beaglebone
java -cacao -version indicates (on Angstrom):
java version "1.6.0_24"
IcedTea Runtime Environment (IcedTea6 1.12pre)
(6b24-1.11.1+1.11.2-devel+hg1+54ceda20a02c)
CACAO (build 1.1.0pre2, compiled mode)
This crash does not happen on the x86  version (Ubuntu 11.10) of cacao
Hmm, it seems to leak, but it behaves exactly the same as on x86_64. Thanks for the test program!
For some reason, the GC stops invoking finalizers after a few iterations. Then it runs out of memory.
That's almost exactly what is described in http://www.hpl.hp.com/personal/Hans_Boehm/gc/bounds.html as "an embarrassing failure scenario". I don't exactly understand what happens in this case, because to me it looks like a GC-internal variable (GC_mark_stack_top) keeps one of the list nodes alive, which is not how it's supposed to work. But apart from that, it's a fundamental problem, and CACAO cannot really do anything about that.