[kaffe] Bug report: weak references and GC with Kaffe

Le Sommer Nicolas Nicolas.Le-Sommer@univ-ubs.fr
Fri, 31 May 2002 15:05:58 +0200


--niSbtVIIV1
Content-Type: text/plain; charset=us-ascii
Content-Description: message body text
Content-Transfer-Encoding: 7bit

Hi,

 It seems that the GC abstains from ever reclaiming weakly referenced
 objects (that is, objects that are only 'referenced' by an instance of
 WeakReference, as defined in package java.lang.ref), even when the
 VM is running out of memory.
 
 Is there a bug in the way weak references (and possibly soft and
 phantom references as well) are implemented and/or dealt with by
 the GC in Kaffe?
 
 The attached piece of code creates both strongly referenced and
 unreferenced 'big' objects. A message is displayed whenever an
 unreferenced object is reclaimed (or, more precisely, finalized)
 by the GC.
 A weak reference is maintained to an otherwise not strongly referenced
 object. This object *should* be reclaimed by the GC. Apparently
 this is not the case...

best regards,

Nicolas

--niSbtVIIV1
Content-Type: application/octet-stream
Content-Description: Example of java code with weak references
Content-Disposition: attachment;
	filename="Dummy.java"
Content-Transfer-Encoding: base64

CgppbXBvcnQgamF2YS5sYW5nLnJlZi5XZWFrUmVmZXJlbmNlOwoKcHVibGljIGNsYXNzIER1bW15
IHsKCiAgICBTdHJpbmcgbmFtZV87CiAgICBieXRlW10gdm9sdW1lXyA9IG5ldyBieXRlWzEwMDAw
MF07CgogICAgcHVibGljIER1bW15KFN0cmluZyBuYW1lKSB7CiAgICAgICAgbmFtZV8gPSBuYW1l
OwogICAgfQoKICAgIHByb3RlY3RlZCB2b2lkIGZpbmFsaXplKCkgewogICAgICAgIFN5c3RlbS5v
dXQucHJpbnRsbih0b1N0cmluZygpICsgIi5maW5hbGl6ZSgpIik7CiAgICB9CgogICAgcHVibGlj
IFN0cmluZyB0b1N0cmluZygpIHsKICAgICAgICByZXR1cm4gIkR1bW15KCciICsgbmFtZV8gKyAi
JykiOwogICAgfQoKICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCiAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CiAg
ICAgICAgUnVudGltZSBydW50aW1lID0gUnVudGltZS5nZXRSdW50aW1lKCk7CgogICAgICAgIC8v
IENyZWF0ZSBhICdiaWcnIG9iamVjdCBhbmQga2VlcCBhIHdlYWsKICAgICAgICAvLyByZWZlcmVu
Y2UgdG8gdGhpcyBvYmplY3QKICAgICAgICBEdW1teSBkdW1teSA9IG5ldyBEdW1teSgiV2Vha2x5
IHJlZidlZCIpOwogICAgICAgIFdlYWtSZWZlcmVuY2Ugd2Vha1JlZiA9IG5ldyBXZWFrUmVmZXJl
bmNlKGR1bW15KTsKICAgICAgICBkdW1teSA9IG51bGw7CiAgICAgICAgCiAgICAgICAgLy8gU29t
ZSBvYmplY3RzIHdpbGwgYmUgc3Ryb25nbHkgcmVmZXJlbmNlZCAKICAgICAgICAvLyBieSB0aGlz
IGFycmF5LgogICAgICAgIE9iamVjdFtdIHRhYnMgPSBuZXcgT2JqZWN0WzUwMDAwMDBdOwoKICAg
ICAgICAvLyBMb29wIHVudGlsICdPdXRPZk1lbW9yeUVycm9yJyBleGNlcHRpb24KICAgICAgICBp
bnQgY250ID0gMDsKICAgICAgICB3aGlsZSh0cnVlKSB7CiAgICAgICAgICAgIGZvciAoaW50IGk9
MDsgaSA8IDEwOyBpKyspIHsKICAgICAgICAgICAgICAgIC8vIENyZWF0ZSBhICdiaWcnIG9iamVj
dCBidXQga2VlcCBubyByZWZlcmVuY2UKICAgICAgICAgICAgICAgIC8vIHRvIHRoaXMgb2JqZWN0
IChpdCBjYW4gYmUgcmVjbGFpbWVkLi4uKQogICAgICAgICAgICAgICAgRHVtbXkgdG1wID0gbmV3
IER1bW15KCJVbnJlZidlZCAjIiArIGNudCk7CgogICAgICAgICAgICAgICAgLy8gQ3JlYXRlIGFu
b3RoZXIgJ2JpZycgb2JqZWN0IGFuZCBrZWVwIGEgcmVmZXJlbmNlCiAgICAgICAgICAgICAgICAv
LyB0byB0aGlzIG9iamVjdCAoaXQgY2Fubm90IGJlIHJlY2xhaW1lZCEpCiAgICAgICAgICAgICAg
ICB0YWJzW2NudF0gPSBuZXcgRHVtbXkoIlN0cm9uZ2x5IFJlZidlZCAjIiArIGNudCk7CiAgICAg
ICAgICAgICAgICBjbnQrKzsKICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgIC8vIE9uY2UgaW4gYSB3aGlsZTogZGlzcGxheSBtZW1vcnkgc3RhdHVzCiAgICAgICAgICAg
IFN5c3RlbS5vdXQucHJpbnRsbigiTWVtb3J5IGNvbnN1bXB0aW9uOiAiCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICArIChpbnQpKDEwMCAqIChmbG9hdClydW50aW1lLmZyZWVNZW1vcnko
KSAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBydW50aW1lLnRvdGFs
TWVtb3J5KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICIlIik7CgogICAgICAg
ICAgICAvLyBTZWUgaWYgb3VyIHdlYWsgcmVmZXJlbmNlIHN0aWxsIHJlZmVyZW5jZXMgYW4gb2Jq
ZWN0IChzaG91bGQKICAgICAgICAgICAgLy8gZWl0aGVyIGRpc3BsYXkgdGhlIG9iamVjdCwgb3Ig
J251bGwnKS4KICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJXZWFrIHJlZidlZDogIiAr
IChEdW1teSl3ZWFrUmVmLmdldCgpKTsKICAgICAgICB9CiAgICB9Cn0K
--niSbtVIIV1--