Muchas gracias por las prontas respuestas.
Conozco el hecho de que el GC no actúa cuando se hace el Dispose, pero
para "forzar la situación"
he hecho GC.Collect , ya un poco a la desesperada.
Y aun así, el uso de la memoria, aumenta con una nueva sesión y no se
recupera.
Para identificar el problema he pasado por alto los asuntos
arquitectónicos, y he creado un test que hace:

 NHibernate.Cfg.Configuration cfg = new NHibernate.Cfg.Configuration
();
 cfg.Configure();

 for (int i = 0; i < 10; i++)
 {
             using (ISession sesion = cfg.BuildSessionFactory
().OpenSession())
                {
                    Sector sector = (Sector)sesion.Load(typeof
(SectorImpl), (Int16)10);
                }

            }

GC.Collect();

Lo he ejecutado cada 2 minutos (para simular un entorno de producción
real, como me aconsejaba Gustavo, que por cierto,muy bueno símiles)

De nuevo, gracias.


On 23 ene, 10:03, Gustavo Ringel <[email protected]> wrote:
> Francisco por supuesto que tenes razon en un punto de vista teorico, pero en
> la practica el GC de C# solo recolecta memoria cuando hace allocation.
>
> Ver por ejemplo 
> esto:http://blogs.msdn.com/tess/archive/2007/04/10/net-garbage-collector-p...
>
> *If we exclude GC.Collect calls, this means that a GC will only occur on
> allocation.  I have mentioned this before, but I think it is worth
> mentioning again... a classic mistake to make is to run a stress test and
> then come back 10 mins after the stress test and wonder why memory is not
> being released.  In other words, objects may well be ready to be released
> but no allocations are made, meaning no GCs will occur, so memory usage will
> stay flat.
> *
> Gustavo.
>
> 2009/1/23 Francisco A. Lozano <[email protected]>
>
> > Si el GC no elimina esos objetos de la memoria es porque mantienes
> > referencias a los mismos, simple y llanamente, por mucho dispose que
> > hagas.
>
> > Francisco A. Lozano
>
> > 2009/1/23 Plugin <[email protected]>:
>
> > > Saludos a todos.
>
> > > En primer lugar debo agradeceros vuestra dedicación y consejo, que en
> > > más de una situación delicada me han salvado.
>
> > > La cuestión que quiero plantear es la siguiente:
> > > Hemos puesto en marcha una aplicación ASP.Net que emplea NHibernate.
>
> > > Para la gestión de las sesiones, hemos usado el "Command Pattern", de
> > > forma que cada caso de uso
> > > se enmarca en una apertura/cierre de sesión. (de forma similar a como
> > > se hace en el Session per view )
>
> > > Ahora bien. Lo que hemos observado es que al hacer un Close o un
> > > Dispose de la sesión, el GC hace caso omiso, y la memoria no se está
> > > recuperando, de modo que tras hacer uso varios usuarios de la
> > > aplicación, se produce una OutOfMemoryException...
>
> > > He probado a hacer un test de stress haciendo apertura/cierre/dispose
> > > de sesiones, recuperando un objeto, y he comprobado que efectivamente,
> > > el uso de memoria crece, crece....
>
> > > Dónde puede estar el problema?
> > > Hay algo que no entendí bien?
>
> > > Un saludo.
>
>
--~--~---------~--~----~------------~-------~--~----~
Para escribir al Grupo, hágalo a esta dirección: 
[email protected]
Para más, visite: http://groups.google.com/group/NHibernate-Hispano
-~----------~----~----~----~------~----~------~--~---

Responder a