Re: [Gc] Is there a way to walk the entire heap of live objects

Bruce Hoult <[email protected]> Sat, 7 Jun 2014 13:04:07 +1200
Newsgroups gmane.comp.programming.garbage-collection.boehmgc
Message-ID <CAMU+EkyqxMAQi0MF0NEK9indguZ6rGxa4NWZoR25T4LtJ+Z_yw@mail.gmail.com>
How are you reading the c++ files? Are they, or anything else, GC objects
larger than 4 KB?



On Sat, Jun 7, 2014 at 11:07 AM, Christian Schafmeister <
[email protected]> wrote:

> Apologies if this is a duplicate - I ran into trouble with the size due to
> a graph I included.
>
> I used the code that Peter sent me as-is - it works very well - thanks!
>
> I’m writing a Common Lisp implementation that interoperates with C++ and
> uses LLVM as the back end.  I’ve written a static analyzer for my C++ code
> to help me clean it up and add features. When I run the static analyzer on
> the 165 C++ source files using the Boehm GC it blows up.
>
> At the end of processing 165 source files the process consumes about 30GB
> (gigabytes) of memory.
>
> So I run the static analyzer on one source file 10 times and use the code
> that Peter sent me and walk the reachable objects and add up their memory
> footprint.   There are a handful of objects that don’t have valid headers -
> I filter them out and currently don’t count them. I find that the total
> reachable memory used by the system remains pretty constant at 62MB to 34MB
> (it spikes and then goes down).
>
> But the total memory used by my process goes up and up and up very quickly!
>
> I ran the OS X program “heap” on the process and it reports “non-object”
> heap memory - which I assume is allocated by the Boehm GC (this assumption
> may be wrong - please correct me if you know better).
>
> Here is a graph that shows all of the memory usage each time after
> parsing/generating an AST/searching the AST for the same C++ file. A bit of
> explanation… The Y axis is log(Bytes)  The red points are what “heap”
> reports as “non-object” memory - I assume this is total Boehm memory. The
> green points are the total reachable Boehm memory that has a valid header
> that I built.   The blue points are the reachable Boehm memory that was
> allocated just since the start of loading the most recent C++ file. I
> measure this by writing an integer marker into the header of each newly
> allocated object and changing that marker each time I read the source file
> - this lets me track what objects are allocated since the last operation.
>
> Graph link: http://imgur.com/tSN5jRL
>
>
>
> This can’t be memory fragmentation can it?
> Is Boehm not reusing memory properly?
> Am I not configuring Boehm properly?
> _______________________________________________
> bdwgc mailing list
> [email protected]
> https://lists.opendylan.org/mailman/listinfo/bdwgc
>
> --
> This message has been scanned for viruses and
> dangerous content by MailScanner, and is
> believed to be clean.
>
>

_______________________________________________
bdwgc mailing list
[email protected]
https://lists.opendylan.org/mailman/listinfo/bdwgc