Why mono GC does not realloc the heap after collect?

2 messages Options
Embed this post
Permalink
Alex A Ermoshenko

Why mono GC does not realloc the heap after collect?

Reply Threaded More More options
Print post
Permalink

//Example code
//On the NetFarmewort - all work fine
//On Mono  - ~105MiB in the heap, after GC.Collect(). Expected ~5 MiB
////////////////
using System;
using System.Collections.Generic;
using System.Text;

namespace mono_gc_test
{
        class Program
        {
                static object alloc100MB()
                {
                        byte[] data = new byte[100 * 1024 * 1024];
                        return data;
                }
                static void msg(string text, bool wait)
                {
                        Console.WriteLine(text);
                        if (wait)
                                Console.ReadLine();
                }
                static void Main(string[] args)
                {
                        object data = null;
                        msg("Mono GC.Collect() realloc test.", false);
                        msg("Press ENTER to alloc 100MiB of data", true);
                        data = alloc100MB();
                        msg("Press ENTER to GC.Collect()", true);
                        data = null;
                        GC.Collect();
                        msg("Press ENTER to exit", true);
                }
        }
}
--
View this message in context: http://old.nabble.com/Why-mono-GC-does-not-realloc-the-heap-after-collect--tp26160492p26160492.html
Sent from the Mono - General mailing list archive at Nabble.com.

_______________________________________________
Mono-list maillist  -  [hidden email]
http://lists.ximian.com/mailman/listinfo/mono-list
Miguel de Icaza

Re: Why mono GC does not realloc the heap after collect?

Reply Threaded More More options
Print post
Permalink
Because Mono does not support a collector like this, it uses a different
kind, a conservative collector.

> //Example code
> //On the NetFarmewort - all work fine
> //On Mono  - ~105MiB in the heap, after GC.Collect(). Expected ~5 MiB
> ////////////////
> using System;
> using System.Collections.Generic;
> using System.Text;
>
> namespace mono_gc_test
> {
> class Program
> {
> static object alloc100MB()
> {
> byte[] data = new byte[100 * 1024 * 1024];
> return data;
> }
> static void msg(string text, bool wait)
> {
> Console.WriteLine(text);
> if (wait)
> Console.ReadLine();
> }
> static void Main(string[] args)
> {
> object data = null;
> msg("Mono GC.Collect() realloc test.", false);
> msg("Press ENTER to alloc 100MiB of data", true);
> data = alloc100MB();
> msg("Press ENTER to GC.Collect()", true);
> data = null;
> GC.Collect();
> msg("Press ENTER to exit", true);
> }
> }
> }

_______________________________________________
Mono-list maillist  -  [hidden email]
http://lists.ximian.com/mailman/listinfo/mono-list