[Openmcl-devel] memory

Joakim Sandgren joakim at joakimsandgren.com
Tue Apr 13 08:01:36 UTC 2010


This I could do. I already make my own "deep-copy" functions.
With the Sizeof function proposed by A. Repenning it could give me an  
idea of a size.
I think I could try to handle myself the case where I have the real  
instance or a pointer.
I think its quite "tactile" my object. I have staff, section, partial  
section, measure, partial measure ,note group, note.
all these are (what I understand) "real" instances. but then for  
example in the notes I have next note and preceding note, wich is then  
referenced.
so when I do the walker I dont look at them...
And in the end in all the slots there are integers or floats..., or  
Strings. How do I get the size of a string ? length * x.

Very sincerely

Joakim

Le 12 avr. 10 à 20:22, Bill St. Clair a écrit :

> It seems to me that what you need would be partially your own  
> recursive
> data structure walker and partly a CCL-provided SIZEOF generic  
> function.
> The SIZEOF generic function would take a single argument and return  
> the
> number of bytes used by that object alone, but not anything it
> references. Your function would walk one of your data structures,
> calling sizeof on each Lisp object that you consider to be part of  
> that
> one user-level data structure and summing all the results.
>
> I sent in my last reply the code for SIZEOF on a CCL standard CLOS
> instance. Adding a full-featured SIZEOF generic function to CCL would
> likely be useful, and is probably not very difficult. You could do it
> yourself with a little routing around in the CCL source code. Or maybe
> somebody else on the list would like to make a portable version.
>
> -Bill
>
> On 4/12/10 10:16AM, Joakim Sandgren wrote:
>> In my case I have an object that contains all structures and data  
>> for a
>> whole musical composition.
>> parts, measures, notes, pitchvalues mapping tables...
>> It would be good to be able to see the "footprint" of different  
>> types of
>> solution.
>> as you are always confronted with either big size and high speed, or
>> smaller size and more calculations and then slower speed.
>>
>> sincerely
>> joakim
>>
>>
>> Le 12 avr. 10 à 06:45, Gary Byers a écrit :
>>
>>> When people ask questions like this, they usually means something
>>> like "what's the total size of this object, plus the size of all
>>> things that
>>> it transitively and uniquely references ?"
>>>
>>> Another way of asking that is to ask "if the object in question  
>>> became
>>> garbage, how
>>> much memory would be freed by the GC ?"
>>>
>>> (let* ((obj (make-instance ...)))
>>> (gc)
>>> (let* ((with-obj (%precise-size-of-allocated-memory-at-the-moment)))
>>>  (setq obj nil)
>>>  (gc)
>>>  (let* ((without-obj (%precise-size-of-allocated-memory-at-the- 
>>> moment)))
>>>    (- with-obj without-obj))))
>>>
>>> There's no such function as the one that I'm calling
>>> %PRECISE-SIZE-OF-ALLOCATED-MEMORY-AT-THE-MOMENT; it's very hard to
>>> measure this in CCL (because of threads and because of other  
>>> issues.)
>>> We're also assuming that OBJ is the only thing that becomes garbage
>>> between the two GCs, and we're assuming that that object isn't  
>>> sitting
>>> in some machine register even after we set the variable OBJ to NIL.
>>> Neither of those assumptions is valid.
>>>
>>> I don't want to say that there's no reliable way to answer this
>>> question in general, but it's much, much harder to answer than it
>>> might appear to be at first glance.
>>>
>>> There are some heap-analysis utilities described at
>>> <http://trac.clozure.com/ccl/wiki/MemoryUtils> (some of them are
>>> currently x8664-Linux-specific); none of them try to answer this
>>> question, but they do try to answer some similar questions.
>>>
>>>
>>>
>>> --On April 11, 2010 4:50:23 PM +0200 Joakim Sandgren
>>> <joakim at joakimsandgren.com <mailto:joakim at joakimsandgren.com>>  
>>> wrote:
>>>
>>>> Hi,
>>>> Are there a way to see how big in Kb  or bytes a clos object is ?
>>>>
>>>>
>>>> sincerely
>>>> joakim
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> Joakim Sandgren
>>>> joakim sandgren musik
>>>> 42, rue de Maubeuge
>>>> 75009 Paris
>>>> France
>>>> +33 (0)1 45 26 43 90
>>>> info at joakimsandgren.com <mailto:info at joakimsandgren.com>
>>>> http://www.joakimsandgren.com
>>>
>>>
>>>
>>>
>>
>>
>>
>>
>> Joakim Sandgren
>> joakim sandgren musik
>> 42, rue de Maubeuge
>> 75009 Paris
>> France
>> +33 (0)1 45 26 43 90
>> info at joakimsandgren.com <mailto:info at joakimsandgren.com>
>> http://www.joakimsandgren.com <http://www.joakimsandgren.com/>
>>
>>
>>
>> _______________________________________________
>> Openmcl-devel mailing list
>> Openmcl-devel at clozure.com
>> http://clozure.com/mailman/listinfo/openmcl-devel
>




Joakim Sandgren
joakim sandgren musik
42, rue de Maubeuge
75009 Paris
France
+33 (0)1 45 26 43 90
info at joakimsandgren.com
http://www.joakimsandgren.com

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.clozure.com/pipermail/openmcl-devel/attachments/20100413/3d00f985/attachment.html>


More information about the Openmcl-devel mailing list