Cuál es la mejor forma de encontrar tu memoria cuando se desarrolla en el Compact Framework?

StackOverflow https://stackoverflow.com/questions/10309

  •  08-06-2019
  •  | 
  •  

Pregunta

He usado el CF Remoto Del Monitor De Rendimiento, sin embargo , esto parece sólo el seguimiento de memoria inicializada en el mundo administrado frente a la no administrado mundo.Bueno, sólo puedo suponer esto como los números que aparecen en el analizador se forma corta del máximo permitido (32mb CE 5).Perfiles de una aplicación en particular con el RPM me mostró que el uso total de todas las cachés sólo se las arregla para llegar a alrededor de 12 mb y luego, lentamente, se encoge como (supongo) algo no administrado empieza a reclamar más de memoria.El control deslizante de memoria en el Sistema también muestra que el dispositivo es muy corto en la memoria.Si me matan en el proceso del control deslizante muestra toda la memoria que viene de vuelta.Por lo que debe (?) ser este proceso gestionado que está tragando la memoria.

Es allí cualquier simple(ish?) la moda de cómo uno puede realizar un seguimiento no administrado el uso de la memoria de alguna manera que pueda ayudarme para que coincida con el correspondiente P/Invoke llamadas?

EDITAR:A todos los que re-taggers no lo es .NET, el etiquetado de la pregunta como esta, que confunde las cosas.Es .NETCF / Compact Framework.Sé que parecen ser similares pero son diferentes porque .NET rocas mientras que la CF es básicamente un contenedor de NotImplementedException.

¿Fue útil?

Solución

Intente activar Interoperabilidad de registro.

También, si usted tiene acceso al código de la dll nativa está utilizando, mira esto: http://msdn.microsoft.com/en-us/netframework/bb630228.aspx

Otros consejos

Definitivamente, he estado luchando con no administrado problemas en C# administrado aplicación por un tiempo, no es fácil.

Lo que yo he encontrado para ser más útil es tener una regular la salida a un archivo de registro de texto.Por ejemplo, usted puede imprimir la salida de GlobalMemoryStatus cada par de minutos junto con el registro de cada vez que se carga una nueva forma.Desde allí se puede ver por lo menos que ya sea la memoria poco a poco se erosiona, o una gran cantidad de memoria desaparecido en momentos específicos del día.

Para nosotros, hemos encontrado una gradual pérdida de la memoria todos los días, siempre y cuando el dispositivo estaba siendo utilizado.A partir de ahí con el tiempo supimos que el escaneo de código de barras dispositivo fue ser inicializado por ninguna razón en particular en nuestro Formulario de clase base (yo la culpa de que el desarrollador anterior!:-)

La configuración de este registro puede ser una pequeña molestia, pero para nosotros lo paga grandes dividendos en el largo plazo, especialmente con el dispositivo en uso en vivo podemos obtener datos reales, la instrumentación, el seguimiento de la pila de excepciones, etc.

Ok, yo estoy usando C++ en la CE, no en C# por lo que este puede no ser útil, pero...

Yo uso un paquete que se llama Entrk caja de herramientas que los monitores de la memoria y el uso de los recursos, las pérdidas, y las excepciones en Windows CE.Bastante parecida a la de un ligero CE versión de boundschecker.¿El truco de la mayoría de las veces.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top