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>
>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>

Responder a