[Openmcl-devel] memory
Gary Byers
gb at clozure.com
Sun Apr 11 21:45:14 PDT 2010
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
More information about the Openmcl-devel
mailing list