[Mono-list] RT Os and Mono
Jonathan Pryor
jonpryor at vt.edu
Fri Feb 15 13:26:53 EST 2008
On Fri, 2008-02-15 at 19:08 +0100, Lorenzo Viola wrote:
> I see that you point out the GC , are you speaking about Garbage
> Collection ?
Yes, GC == Garbage Collector or Garbage Collection.
> I saw that for example on Mono+ASP.NET the GC could be quite intensive,
> and not forceable (at last on some month ago version)
You can explicitly request a GC by calling System.GC.Collect(), but the
GC can ignore your request. Generally, it's not a good idea to
explicitly force a GC, unless you know what you're doing.
> btw , what do you mean for implicit boxing ? is it a sort of unwanted
> recursion ?
Value types are stored on the stack or "inline" within the object. If
you need a value type to be placed on the GC heap, it needs to be boxed.
Examples of boxing:
object o = 42;
Console.WriteLine (42);
ArrayList a = new ArrayList (); a.Add (42);
Notice that there is no visible indication that boxing is occurring.
> But IF I work by these terms :
>
> - if the CPU and memory are fast and big enough (like being 10 times the
> ususally needed cpu and memory by the application)
>
> - if the GC could be forced to start at secure-time-known idle times
>
> - if the application has been tested and kept as simple as possible not
> to start any unhandled exception , or unpredictable situation
>
> Would you still not trust such a RT application ?
I would trust it more than the un-GC'd equivalent. The reason? Heap
fragmentation. Without a GC, the heap can become fragmented, eventually
reaching the point that (1) you have enough memory to fulfill a request,
but (2) the memory you have available isn't contiguous, so the request
cannot be fulfilled.
Mono won't currently help here (as it doesn't currently use a moving
collector), but the use of a GC (eventually) permits a moving collector,
which can prevent the heap from becoming fragmented.
In short, the GC isn't necessarily a problem; it's just a different set
of trade-offs compared to manually managing memory (memory leaks vs. GC
overhead, heap fragmentation vs. GC overhead, etc.).
> What also could go wrong ?
Don't tempt fate. :-)
- Jon
More information about the Mono-list
mailing list