[Openmcl-devel] memory
Bill St. Clair
wws at clozure.com
Mon Apr 12 06:41:37 PDT 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