Afraid there's no switch :)

On Mon, Oct 15, 2018 at 9:50 AM Richard Sloggett <[email protected]>
wrote:

> Hello,
>
>
>
> Thanks for getting back to me, and for the tips on using the Has..
> properties – I will certainly do that.
>
>
>
> Is there a setting built in to switch from an in memory byte array to
> reading from disk, or is that something I would need to do implement in a
> custom build of cecil?
>
>
>
> Richard
>
>
>
> *From:* [email protected] <[email protected]> *On
> Behalf Of *Jb Evain
> *Sent:* 15 October 2018 17:42
> *To:* [email protected]
> *Subject:* Re: [mono-cecil] Memory tips
>
>
>
> Hey Richard,
>
>
>
> Thanks for the kind words, always glad to read that Cecil is useful!
>
>
>
> I don't think there's anything built-in that will help you more. Most
> metadata is lazy loaded on demand, so if you're using only a subset you
> should not consume too much memory. One useful pattern is to always use the
> HasN properties before accessing the N collection.
>
>
>
> For instance:
>
>
>
> if type.HasMethods
>
>   foreach (var m in type.Methods)
>
>     ...;
>
>
>
> This prevents allocating empty collections if there's no methods in there.
>
>
>
> If you want to dive into the internals, the parts of the binary that
> contains the metadata information (the heaps,
> https://github.com/jbevain/cecil/blob/master/Mono.Cecil.PE/ImageReader.cs#L367)
> will indeed be loaded in memory as a byte[] for fast access.
>
>
>
> If you're very memory constrained you can change Cecil to always read on
> disk but you'll see a lot of seeking which is likely going to be slowish.
>
>
>
> Jb
>
>
>
>
>
>
>
> On Fri, Oct 12, 2018 at 8:59 AM rsuk <[email protected]> wrote:
>
> Firstly, a huge thank you - mono.cecil has been hugely useful and clearly
> you have invested a massive amount of work on it over the years.
>
>
>
> I have completed an initial set of development using mono.cecil; using it
> only for inspecting type information, not generating assemblies, reading
> .pdb etc. I'm wondering if you might be able to offer any tips on reducing
> the memory usage? I have been experimenting with different reader
> parameters and have currently settled on:
>
>
>
> InMemory = false,
>
> ReadWrite = false,
>
> ReadSymbols = false
>
>
>
> We only use a fairly small subset of the properties available on the
> TypeReference, TypeDefinition etc., so I'm wondering if you might have any
> tips on how we might be able to minimize memory usage once we have loaded
> all the required AssemblyDefinitions; i.e. I'm wondering if it might be
> possible to discard some data held behind the scenes that might not be
> necessary in an inspection only scenario. Not necessarily looking for
> anything built in, maybe something we could implement in our own code to
> "prune" the object graph somehow to reduce the overall memory footprint.
>
>
>
> One thing we have observed is that a large number of byte arrays are held
> in memory - does mono.cecil hold the raw metadata in memory and query on
> demand, or could this be data that is being held in memory for some other
> purpose - i.e. manipulating and writing assemblies. I wonder if might be
> possible to somehow remove that once we have completed the initial
> population of the objects?
>
>
>
> Thanks for any pointers or tips you might be able to offer - much
> appreciated.
>
>
>
> Richard
>
> --
> --
> --
> mono-cecil
> ---
> You received this message because you are subscribed to the Google Groups
> "mono-cecil" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> For more options, visit https://groups.google.com/d/optout.
>
> --
> --
> --
> mono-cecil
> ---
> You received this message because you are subscribed to the Google Groups
> "mono-cecil" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> For more options, visit https://groups.google.com/d/optout.
>
> --
> --
> --
> mono-cecil
> ---
> You received this message because you are subscribed to the Google Groups
> "mono-cecil" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> For more options, visit https://groups.google.com/d/optout.
>

-- 
-- 
--
mono-cecil
--- 
You received this message because you are subscribed to the Google Groups 
"mono-cecil" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to