Tengo un objeto estático en tiempo de ejecución que es básicamente una lista de otros objetos (ints, cadenas, diccionario, otros objetos, etc.). ¿Hay forma de determinar la memoria utilizada por mi objeto estático de "lista de otros objetos" en tiempo de ejecución? Esto sería útil para fines de instrumentación e informes.¿Cuál es la huella de memoria de un objeto en Runtime en .NET?
Respuesta
Probablemente esté pidiendo algo que pueda llamar desde su código (que me gustaría saber también), pero sentí que debería mencionar Ants profiler [http://www.red-gate.com/Products/ants_profiler/index.htm] en caso de que otros no estén buscando algo tan específico. Le informará todo tipo de información sobre su código mientras se está ejecutando, incluida la cantidad de memoria que se está utilizando.
Desde su página web ...
memoria de perfiles para comprender cómo su aplicación utiliza la memoria, y para localizar pérdidas de memoria. El perfilador de memoria le permite tomar instantáneas en cualquier punto en la ejecución de su programa , para que pueda ver qué memoria está usando en ese momento. Puede tomar varias instantáneas en diferentes momentos mientras su aplicación se está ejecutando, por lo que puede comparar la memoria de la aplicación estados.
Sizeof se puede utilizar en los tipos de valor también hay Marshal.SizeOf que se puede utilizar con algunos consejos para .NET:
... Pero eso no es exactamente el total de costo ya que el tiempo de ejecución asigna bytes adicionales para las clases de cosas como bloques de sincronización.
Si usted está realmente interesado en la medición de este tipo de cosas, sin embargo, se debe utilizar la API de perfiles:
http://msdn.microsoft.com/en-us/library/ms404386.aspx
o una herramienta libre como windbg que pueden hacer todo tipo de cosas maravillosas.
No sin un generador de perfiles. Ya es bastante difícil para una sola clase: consulte here.
Gracias por las respuestas. Creo que mi plan inicial de ataque, porque estoy seguro que la mayoría de los objetos será serializable, será algo como esto:
using (MemoryStream memstream = new MemoryStream())
{
BinaryFormatter formatter = new BinaryFormatter();
try
{
formatter.Serialize(memstream, myObjectOfObjects);
mem_footprint += memstream.Length;
}
catch
{
// not a serializable object
}
}
- 1. .NET Huella de memoria EXE
- 2. Multiple .NET procesa la huella de memoria
- 3. ¿Cuál es la huella de memoria de un método objeto Java intensivo?
- 4. ¿Cuál es la huella de memoria del DLR?
- 5. ¿Cuál es la solución de servidor web más rápida con la huella de memoria más baja?
- 6. Minimizando la huella de memoria en los programas C
- 7. Cómo reducir la huella de memoria en aplicaciones intensivas de cadenas .NET?
- 8. LINQ en .NET 2.0 Runtime
- 9. Huella de memoria de mapas de Apple
- 10. ¿Cuál es la diferencia entre Version y 'Runtime Version' en .Net?
- 11. ¿Cuál es el "costo" de la reflexión .NET?
- 12. Características de la huella de memoria de la colección Scala
- 13. Rotura de búfer de Tcp en .NET runtime
- 14. ¿Cuál es la aplicación de medicamentos genéricos para el NET Common Language Runtime
- 15. ¿Cuál es la filosofía de administrar la memoria en C++?
- 16. ¿Son .NET 4.0 Runtime más lentos que .NET 2.0 Runtime?
- 17. ¿Cuál es la forma correcta de liberar memoria en C#
- 18. Huella de memoria para una aplicación Java
- 19. ¿Cuál es exactamente el Host Runtime?
- 20. minimizar la huella de memoria "por conexión" de Tomcat
- 21. En .NET, ¿cuál es la implementación interna de un delegado?
- 22. defecto .NET Runtime Versión
- 23. ¿Cuál es el mejor lenguaje para el reconocimiento de huella?
- 24. Fugas de memoria en .NET
- 25. El serializador y deserializador más rápido con la huella de memoria más baja en C#?
- 26. ¿Cuál es la sobrecarga de memoria de almacenar datos en una .NET DataTable?
- 27. Huella de memoria de los tipos de datos Haskell
- 28. en C++, ¿cuál es la diferencia entre un objeto y un puntero a un objeto?
- 29. Python: ¿Cómo estimar/calcular la huella de memoria de las estructuras de datos?
- 30. ¿La clase sin miembro de datos tiene huella de memoria en java?
de hecho estoy buscando una ejecución programática. Pero estoy de acuerdo en que ANTS Profiler definitivamente puede ser útil en las situaciones correctas :) – Bullines