[Mono-list] Why mono GC does not realloc the heap after collect?

Miguel de Icaza miguel at novell.com
Tue Nov 3 14:45:17 EST 2009


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);
> 		}
> 	}
> }



More information about the Mono-list mailing list