[Openmcl-devel] memory

Bill St. Clair wws at clozure.com
Mon Apr 12 13:41:37 UTC 2010


Then again, he may just want to know the storage necessary for the
instance itself, much like sizeof in C. I believe the following does that:

(defun words-to-bytes (words)
  (let ((bytes-per-word #+64-bit-target 8 #+32-bit-target 4))
    (* 8 (ceiling (* bytes-per-word words) 8))))

(defun instance-size (instance)
  (assert (ccl::standard-instance-p instance))
  (+ (words-to-bytes (ccl:uvsize instance))
     (words-to-bytes (ccl:uvsize (ccl::instance.slots instance)))))

On 4/12/10 12:45AM, Gary Byers wrote:
> 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> 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
>> http://www.joakimsandgren.com
> 
> 
> 
> 
> _______________________________________________
> Openmcl-devel mailing list
> Openmcl-devel at clozure.com
> http://clozure.com/mailman/listinfo/openmcl-devel



More information about the Openmcl-devel mailing list