From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.1.3 (2006-06-01) on yquem.inria.fr X-Spam-Level: ** X-Spam-Status: No, score=2.2 required=5.0 tests=AWL,DNS_FROM_SECURITYSAGE, SPF_SOFTFAIL autolearn=disabled version=3.1.3 X-Original-To: caml-list@yquem.inria.fr Delivered-To: caml-list@yquem.inria.fr Received: from mail1-relais-roc.national.inria.fr (mail1-relais-roc.national.inria.fr [192.134.164.82]) by yquem.inria.fr (Postfix) with ESMTP id BAE1EBB84 for ; Thu, 30 Oct 2008 19:48:28 +0100 (CET) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ArYAAHueCUmEqOABmWdsb2JhbACUCwEBAQEBCAsKBxG4boNR X-IronPort-AV: E=Sophos;i="4.33,517,1220220000"; d="dat'59?scan'59,208,59";a="19399340" Received: from oxalide-out.extra.cea.fr ([132.168.224.1]) by mail1-smtp-roc.national.inria.fr with ESMTP; 30 Oct 2008 19:48:28 +0100 Received: from nephilia.intra.cea.fr (nephilia.intra.cea.fr [132.166.88.33]) by oxalide.extra.cea.fr (8.14.2/8.14.2/CEAnet-Internet-out-1.1) with ESMTP id m9UIlCOF025025 for ; Thu, 30 Oct 2008 19:47:12 +0100 Received: from muguet1.intra.cea.fr (muguet1.intra.cea.fr [132.166.192.6]) by nephilia.intra.cea.fr (8.13.8/8.13.8) with ESMTP id m9UImR70017918 for ; Thu, 30 Oct 2008 19:48:27 +0100 (envelope-from Pascal.CUOQ@cea.fr) Received: from mansart.intra.cea.fr (mansart.intra.cea.fr [132.166.88.54]) by muguet1.intra.cea.fr (8.13.8/8.13.8/CEAnet-Intranet-out-1.1) with ESMTP id m9UImRRd029561 for ; Thu, 30 Oct 2008 19:48:27 +0100 Received: from LAXA.intra.cea.fr ([132.166.64.42]) by mansart.intra.cea.fr with Microsoft SMTPSVC(6.0.3790.1830); Thu, 30 Oct 2008 19:48:27 +0100 X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----_=_NextPart_001_01C93AC0.179D0544" Subject: RE: understanding weak Date: Thu, 30 Oct 2008 19:48:26 +0100 Message-ID: <5EFD4D7AC6265F4D9D3A849CEA9219191AB114@LAXA.intra.cea.fr> X-MS-Has-Attach: X-MS-TNEF-Correlator: <5EFD4D7AC6265F4D9D3A849CEA9219191AB114@LAXA.intra.cea.fr> Thread-Topic: understanding weak thread-index: Ack6vC+LExIayHbtSyuMs9QvWcrdwwAAaH/q References: <20081030182019.EEBC5BBB7@yquem.inria.fr> From: "CUOQ Pascal" To: X-OriginalArrivalTime: 30 Oct 2008 18:48:27.0252 (UTC) FILETIME=[184BC340:01C93AC0] X-Spam: no; 0.00; cuoq:01 cuoq:01 ocaml's:01 pointers:01 pointers:01 hash:01 warren:98 warren:98 renewal:98 wrote:01 cea:01 short:01 referenced:02 objects:02 objects:02 X-Attachments: type="application/ms-tnef" name="winmail.dat" This is a multi-part message in MIME format. ------_=_NextPart_001_01C93AC0.179D0544 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Warren Harris wrote: > I'd like to understand better how ocaml's weak pointers operate.=20 You will be interested in the following important article: http://portal.acm.org/citation.cfm?id=3D1411308 :) =20 >First, although it doesn't seem to be specified in the documentation, =20 >I assume that weak pointers will *not* be reclaimed (e.g. from a weak =20 >hash table) if the program retains some other reference to the object. = Exactly. >My second question relates specifically to my application. I would =20 >like to have a primary cache of objects, and a secondary index into =20 >sub-objects referenced from the primary cache. I.e. CacheA references =20 >objects of type A; objects of type A reference objects of type B; =20 >CacheB references objects of type B. I would like to guarantee that =20 >weak references in CacheB are not flushed unless the corresponding =20 >reference from CacheA is first flushed. I assume will be the case if a = >non-weak reference from A to B is maintained. The non-weak reference from A to B prevents B being unreachable without A being unreachable, so yes, a reference from CacheB can not disappear without the reference from CacheA disappearing earlier or simultaneously. This said, if what you want is really a cache, you would probably be better off fixing its size and renewal strategy yourself than letting the GC do it for you (by using weak pointers). What it will do has = almost no chance of being the best compromise between memory use and speed for your application, and it may change without notice from one version to the other. In short: don't use weak pointers to make = caches. >Can anyone verify? If you want to experiment to confirm your impressions, the function Gc.full_major is your friend. Pascal ------_=_NextPart_001_01C93AC0.179D0544 Content-Type: application/ms-tnef; name="winmail.dat" Content-Transfer-Encoding: base64 eJ8+IhsSAQaQCAAEAAAAAAABAAEAAQeQBgAIAAAA5AQAAAAAAADoAAEIgAcAGAAAAElQTS5NaWNy b3NvZnQgTWFpbC5Ob3RlADEIAQ2ABAACAAAAAgACAAEEgAEAFwAAAFJFOiB1bmRlcnN0YW5kaW5n IHdlYWsALwgBBYADAA4AAADYBwoAHgATADAAGgAEAGgBASCAAwAOAAAA2AcKAB4AEwAwABoABABo AQEJgAEAIQAAADY1OEFDNzNCQjBBMEFENEE4OURFOTRBNjZFNzlCOTlDAHAHAQOQBgCgDAAAOQAA AAMAJgAAAAAAAwA2AAAAAABAADkARAWdF8A6yQEeAD0AAQAAAAUAAABSRTogAAAAAAIBRwABAAAA LgAAAGM9RlI7YT1BVExBUztwPUNFQTtsPUxBWEEtMDgxMDMwMTg0ODI2Wi0zNjcxMAAAAB4ASQAB AAAAIwAAAENhbWwtbGlzdCBEaWdlc3QsIFZvbCA0MCwgSXNzdWUgNjcAAEAATgCA8wQqvDrJAR4A WgABAAAAIQAAAGNhbWwtbGlzdC1ib3VuY2VzQHlxdWVtLmlucmlhLmZyAAAAAAIBWwABAAAAXwAA AAAAAACBKx+kvqMQGZ1uAN0BD1QCAAAAAGNhbWwtbGlzdC1ib3VuY2VzQHlxdWVtLmlucmlhLmZy AFNNVFAAY2FtbC1saXN0LWJvdW5jZXNAeXF1ZW0uaW5yaWEuZnIAAAIBXAABAAAAJgAAAFNNVFA6 Q0FNTC1MSVNULUJPVU5DRVNAWVFVRU0uSU5SSUEuRlIAAAAeAF0AAQAAACEAAABjYW1sLWxpc3Qt cmVxdWVzdEB5cXVlbS5pbnJpYS5mcgAAAAACAV4AAQAAAF8AAAAAAAAAgSsfpL6jEBmdbgDdAQ9U AgAAAABjYW1sLWxpc3QtcmVxdWVzdEB5cXVlbS5pbnJpYS5mcgBTTVRQAGNhbWwtbGlzdC1yZXF1 ZXN0QHlxdWVtLmlucmlhLmZyAAACAV8AAQAAACYAAABTTVRQOkNBTUwtTElTVC1SRVFVRVNUQFlR VUVNLklOUklBLkZSAAAAHgBmAAEAAAAFAAAAU01UUAAAAAAeAGcAAQAAACEAAABjYW1sLWxpc3Qt Ym91bmNlc0B5cXVlbS5pbnJpYS5mcgAAAAAeAGgAAQAAAAUAAABTTVRQAAAAAB4AaQABAAAAIQAA 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 MOs+txfAOskBAwDeP69vAAADAPE/CQQAAB4A+D8BAAAADAAAAENVT1EgUGFzY2FsAAIB+T8BAAAA cAAAAAAAAADcp0DIwEIQGrS5CAArL+GCAQAAAAAAAAAvTz1DRUEvT1U9REkvQ049RE9NQUlORVMv Q049RFJULVNBQy9DTj1VVElMSVNBVEVVUlMvQ049UFJFLUUySzMvQ049TE9UMS9DTj1QQzIwNjA1 NgAeAPo/AQAAABUAAABTeXN0ZW0gQWRtaW5pc3RyYXRvcgAAAAACAfs/AQAAAB4AAAAAAAAA3KdA yMBCEBq0uQgAKy/hggEAAAAAAAAALgAAAAMA/T/kBAAAAwAZQAAAAAADABpAAAAAAAMAHUAAAAAA AwAeQAAAAAAeADBAAQAAAAkAAABQQzIwNjA1NgAAAAAeADFAAQAAAAkAAABQQzIwNjA1NgAAAAAe ADJAAQAAACEAAABjYW1sLWxpc3QtYm91bmNlc0B5cXVlbS5pbnJpYS5mcgAAAAAeADNAAQAAACEA AABjYW1sLWxpc3QtcmVxdWVzdEB5cXVlbS5pbnJpYS5mcgAAAAAeADhAAQAAAAkAAABQQzIwNjA1 NgAAAAAeADlAAQAAAAIAAAAuAAAAAwB2QP////8LACkAAAAAAAsAIwAAAAAAAwAGEAl+X9cDAAcQ gAUAAAMAEBAAAAAAAwAREAAAAAAeAAgQAQAAAGUAAABXQVJSRU5IQVJSSVM8V0FSUkVOQE1FVEFX RUJDT01XUk9URTpJRExJS0VUT1VOREVSU1RBTkRCRVRURVJIT1dPQ0FNTFNXRUFLUE9JTlRFUlNP UEVSQVRFWU9VV0lMTEJFSU5UAAAAAAIBfwABAAAAOwAAADw1RUZENEQ3QUM2MjY1RjREOUQzQTg0 OUNFQTkyMTkxOTFBQjExNEBMQVhBLmludHJhLmNlYS5mcj4AAEuL ------_=_NextPart_001_01C93AC0.179D0544--