Hola Carlos, Nop, siempre se accede a través del método GetQuery :)
Saludos, Ing. Damián Herrera Director CIVINEXT Tel. / Fax: +54 (11) 3968-0039 [email protected] http://www.civinext.com <http://www.linkedin.com/company/civinext-s.a.> <http://www.facebook.com/groupware><http://www.twitter.com/damianherrera><http://www.youtube.com/user/damianherrera> <http://es.wikipedia.org/wiki/Civinext> El 19 de marzo de 2013 13:46, Carlos Peix <[email protected]>escribió: > La implementacion es correcta siempre y cuando no devuelvas referencias a > mQueries fuera de la clase XXX. Cuidado con eso, si ese fuera el caso, > seria preferible bloquear una referencia privada a una instancia de Object. > > Saludos > > ---------------------------------- > Carlos Peix > > 2013/3/19 Damián Herrera <[email protected]> > >> Hola Carlos, >> >> Me mataste, te copio como esta armado el Synclock del Dictionary, el >> object en cuestión es mQueries. >> >> *Class XXX* >> * >> * >> *Private mQueries As New Generic.Dictionary(Of String, String) >> * >> * >> * >> *Public Function GetQuery(ByVal pParameterCollection As >> ParameterCollection) As String* >> *...* >> *SyncLock mQueries >> * >> *'Pregunto si existe el key, si no existe, e**scribo en mQueries....* >> *End SyncLock >> * >> * >> * >> *Return mQueries(mQueryKey)* >> *End Function >> * >> * >> * >> *End Class* >> >> >> >> >> >> Saludos, >> Ing. Damián Herrera >> Director >> CIVINEXT >> Tel. / Fax: +54 (11) 3968-0039 >> [email protected] >> http://www.civinext.com >> <http://www.linkedin.com/company/civinext-s.a.> >> <http://www.facebook.com/groupware><http://www.twitter.com/damianherrera><http://www.youtube.com/user/damianherrera> >> <http://es.wikipedia.org/wiki/Civinext> >> >> >> >> El 19 de marzo de 2013 11:54, Carlos Peix >> <[email protected]>escribió: >> >>> OK, un XML de 500K puede ocupar 1 o 2 MB en memoria, pero tampoco es >>> mucho. >>> >>> Respecto del SyncLock, habria que ver como esta hecho, pero si has >>> tomado las precauciones, no creo que venga por ese lado >>> >>> ---------------------------------- >>> Carlos Peix >>> >>> 2013/3/19 Damián Herrera <[email protected]> >>> >>>> Hola Carlos, >>>> >>>> Gracias por tu respuesta. Al XmlDocument lo escribo en el stratup del >>>> application protegido con un mutex para evitar asegurar que se escribe una >>>> unica vez, luego la consulta si es multi thread. >>>> >>>> Con el Dictionary no estoy seguro de lo que esta sucediendo, pero para >>>> escribirlo lo hago con un SyncLock para asegurar tambien el Thread Safe. La >>>> lectrura también es multi thread. >>>> >>>> Tarde en responderte porque estuve buscando en unos reportes del Debug >>>> Diagnostic Tool y no encontré específicamente esta info. Es decir, >>>> la encontré de un montón de otros objetos, pero no del XmlDocument ni del >>>> Generic.Dictionary. Para dimensionar el XmlDocument, busque todos los XML >>>> que tengo y con toda la furia llegaría a 500KB y el Dictionary debería ser >>>> similar o menor. >>>> >>>> >>>> >>>> >>>> Saludos, >>>> Ing. Damián Herrera >>>> Director >>>> CIVINEXT >>>> Tel. / Fax: +54 (11) 3968-0039 >>>> [email protected] >>>> http://www.civinext.com >>>> <http://www.linkedin.com/company/civinext-s.a.> >>>> <http://www.facebook.com/groupware><http://www.twitter.com/damianherrera><http://www.youtube.com/user/damianherrera> >>>> <http://es.wikipedia.org/wiki/Civinext> >>>> >>>> >>>> >>>> El 18 de marzo de 2013 23:07, Carlos Peix >>>> <[email protected]>escribió: >>>> >>>>> Hola Damian, >>>>> >>>>> Por el lado del XMLDocument, no es una estructura muy buena para >>>>> almacenar datos en memoria. Por un lado es muy poco eficiente en el uso de >>>>> la memoria y no estoy seguro de que sea thread safe. >>>>> >>>>> Por el lado del Dictionary<,> seguro que no es thread safe para la >>>>> escritura, deberias sincronizar el acceso para lograrlo. >>>>> >>>>> Ahora bien, no creo que ninguna de las dos estructuras "pierdan" >>>>> objetos aunque haya mucha presión de memoria. >>>>> >>>>> Tenes una idea del tamaño de esas estructuras? >>>>> >>>>> ---------------------------------- >>>>> Carlos Peix >>>>> >>>>> 2013/3/18 Damián Herrera <[email protected]> >>>>> >>>>>> Buenas, >>>>>> >>>>>> Espero que anden bien. Hace mucho que no escribo y buscando algo de >>>>>> info. me pareció que era algo para postear en la lista. >>>>>> >>>>>> Actualmente tenemos un problema en ambientes de alto >>>>>> trafico, básicamente manejamos Generic.Dictionary(string,string) y >>>>>> Xml.XmlDocument. Únicamente en ambientes de alto trafico, nos sucede de >>>>>> vez >>>>>> en cuando que desaparecen elementos del Dictionary o el XmlDocument >>>>>> queda vacío. >>>>>> >>>>>> Sospecho que el XMLDocument queda vacío porque hay momentos en los >>>>>> que no se utiliza porque hay una capa de cache que hace que se lo >>>>>> consulte >>>>>> poco, pero la referencia sigue activa dentro de una clase (esta declarado >>>>>> como private shared). Algo similar ocurre con el Dictionary, pero este se >>>>>> usa más que el XmlDocument. >>>>>> >>>>>> La consulta en si misma es, hay alguna forma de "marcar" o >>>>>> especificar que esas variables no deben ser recolectadas o alguna manera >>>>>> de >>>>>> que me entere cuando las recolectan? Es algo que estuve buscando y >>>>>> no encontré mucha info. y no estoy seguro que tenga que ver con el GC. >>>>>> >>>>>> Bueno, cualquier orientación se agradece. >>>>>> >>>>>> Saludos! >>>>>> Ing. Damián Herrera >>>>>> Director >>>>>> CIVINEXT >>>>>> Tel. / Fax: +54 (11) 3968-0039 >>>>>> [email protected] >>>>>> http://www.civinext.com >>>>>> <http://www.linkedin.com/company/civinext-s.a.> >>>>>> <http://www.facebook.com/groupware><http://www.twitter.com/damianherrera><http://www.youtube.com/user/damianherrera> >>>>>> <http://es.wikipedia.org/wiki/Civinext> >>>>>> >>>>>> >>>>> >>>> >>> >> >
