Andreas, Humor aside, it is an important consideration for a system that is to be able to run for any length of time. So far, I appear to be having good results in that area (yup, my servers are still running), but I am working on something that could turn into a real resource hog if it does not clean up after itself. I *think* the cleanup is limited to other wrapper objects, and the structs are largely just a convenience for accessing memory allocated elsewhere - I think ~:0 Thanks! Bill -----Original Message----- From: pharo-project-bounces@lists.gforge.inria.fr [mailto:pharo-project-bounces@lists.gforge.inria.fr] On Behalf Of Andreas Raab Sent: Saturday, April 03, 2010 12:33 AM To: The general-purpose Squeak developers list; Pharo Development Subject: Re: [Pharo-project] [FFI] ExternalStructure ownership (or not) of memory On 4/2/2010 8:37 PM, Schwab,Wilhelm K wrote:
Andreas,
So ExternalStructure>>free is not invoked by default? Sady to say, I never even considered that possibility.
It's not. Memory is cheap :-) Cheers, - Andreas
-----Original Message----- From: pharo-project-bounces-bM+ny+RY8h+a+bCvCPl5/gCzwTLBPCX0@public.gmane.or g [mailto:pharo-project-bounces-bM+ny+RY8h+a+bCvCPl5/gCzwTLBPCX0@public. gmane.org] On Behalf Of Andreas Raab Sent: Friday, April 02, 2010 8:24 PM To: The general-purpose Squeak developers list Cc: Pharo-project-bM+ny+RY8h+a+bCvCPl5/gCzwTLBPCX0@public.gmane.org Subject: Re: [Pharo-project] [FFI] ExternalStructure ownership (or not) of memory
I would suggest that you only register a finalizer for objects where you *do* have responsibility to reclaim them. There are no implicit finalizers registered for any subclasses of ExternalObject by default - the only thing that happens is that all handles are cleared when the image is restarted.
Cheers, - Andreas
On 4/2/2010 5:17 PM, Schwab,Wilhelm K wrote:
Hello all,
Suppose I have a pointer to a structure and I do or do not have the responsibility of reclaiming the memory when a corresponding ExternalStructure sub-instance is finalized. How do I distinguish the two cases? One idea I had is to explicitly set the handle to nil if I do not own the memory, but (please correct me if I'm wrong), I can't do that while I'm still using the instance because it will presumably use the handle in accessing the fields, right?
Looking at implementors of #isExternalAddress, maybe the idea is to use a byte array to make a copy of memory and an address to refer to it.
What should I be asking? :)
Bill
_______________________________________________ Pharo-project mailing list Pharo-project-bM+ny+RY8h+a+bCvCPl5/gCzwTLBPCX0@public.gmane.org http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
_______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project