Que grande Kash.

Voy a ponerme las orejas de burro y a darme cabezazos contra la
pared....

(no obstante voy a confirmarlo antes...  ;-)



On 23 ene, 10:42, Kash <[email protected]> wrote:
> Como suponía, aquí está tu problema:
>  using (ISession sesion = cfg.BuildSessionFactory
> ().OpenSession())
>
> Estás creando un SessionFactory cada vez que usas una session y eso es
> incorrecto. Sólo debes crear una SessionFactory para toda la aplicación, por
> que es un objeto de alto coste en recursos (como estás pudiendo comprobar),
> el objeto session es el objeto que se debe solicitar al único SessionFactory
> de la aplicación por cada unit of work.
>
> El 23 de enero de 2009 10:39, Plugin <[email protected]> escribió:
>
>
>
>
>
> > 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.
>
> --
>
> =================================
> Sergio Castillo Checa
--~--~---------~--~----~------------~-------~--~----~
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