Como todos sabemos, Java 5 introdujo la capacidad de Instrumentación de obtener el tamaño de un objeto con facilidad. ¿Hay tal método en Android y Dalvik? El paquete java.lang.instrument
no está disponible en Android.Android y Dalvik: obtenga el tamaño de un objeto
Respuesta
Por lo que vale, he mirado el código fuente de Dalvik VM y no puedo encontrar ninguna API estable para obtener el tamaño de un Objeto. Si desea echar un vistazo, el tamaño de un objeto se almacena en ClassObject::objectSize : size_t
, consulte dalvik/vm/oo/Object.h.
Sin embargo, interno API para obtener el tamaño de un objeto. DDMS lo utiliza para informar información detallada sobre el tamaño de los objetos. Pero, dado que la API es interna, es probable que cambie entre las diferentes versiones de Android. Además, la API envía datos crudos byte[]
, y está basado en el cliente/servidor y no es una simple llamada a la biblioteca, por lo que será extremadamente incómodo de usar. Si desea echar un vistazo, comience en dvmAllocObject()
en dalvik/vm/alloc/Alloc.cpp y la llamada dvmTrackAllocation()
.
Para resumir: desafortunadamente no hay ninguna API estable que se pueda utilizar para obtener el tamaño de un objeto en la VM Dalvik.
Hit the jackpot, dvmAllocObject es la función llamado cuando se usa un nuevo operador. En cuanto al tamaño, es una cosa verdadera, los usuarios de la aplicación pueden obtener el tamaño. –
Para este problema, es mejor no utilizar un enfoque programático sino utilizar la herramienta Memory Analyzer (MAT) desde www.eclipse.org/mat/ Tiene una versión independiente y un complemento para Eclipse. Con él puedes crear una instantánea del montón de Dalvik y luego puedes ordenar la lista de objetos por su tamaño o también por el tamaño de sus objetos referenciados (tamaño retenido). Utilicé esto exactamente para solucionar problemas de fugas de caché de mapa de bits.
Está buscando una manera de calcular el tamaño de un objeto ** en tiempo de ejecución **. –
La solución que propuse funciona exactamente en tiempo de ejecución. – WindRider
int length =processes.size();
le devuelve el tamaño del objeto.
¿Qué tipo es ** procesos **? Esto no parece muy útil en absoluto. –
No respondiendo a la pregunta anterior – milosmns
Supongo que está pensando que los procesos son una ArrayList o algo así. –
- 1. ¿Qué es Dalvik y dalvik-cache?
- 2. Obtenga el OnClickListener actual de un objeto Android View
- 3. Obtenga el tamaño de una matriz 2D
- 4. Android, obtenga el tamaño y la fecha de la aplicación instalada
- 5. Obtenga el tamaño fácil de la aplicación
- 6. python. obtener el tamaño de un objeto
- 7. Obteniendo el tamaño de un Objeto Qt
- 8. Averigüe el tamaño de un objeto .net
- 9. Averigüe el tamaño de un objeto polimórfico
- 10. QT: obtenga el nombre de clase de un objeto
- 11. Generación dinámica de bytecode Dalvik en una aplicación Dalvik/Android en ejecución
- 12. Dalvik JIT workflow
- 13. Cómo hago dalvik aislado
- 14. iPhone obtenga ancho y tamaño de la imagen
- 15. Obtenga el límite máximo de tamaño de la textura OpenGL ES 2.0 en Android
- 16. Obtenga un tamaño de pantalla efectivo de Java
- 17. ¿Qué optimizaciones puedo esperar de Dalvik y de la cadena de herramientas de Android?
- 18. Obtenga el tamaño preferido de la distribución de flujo multilínea
- 19. ¿Cómo mejorarías Dalvik? La máquina virtual de Android
- 20. Conseguir el tamaño de un array en un objeto
- 21. Android: ¿Hay alguna manera de obtener el tamaño de un objeto RemoteViews?
- 22. Obtenga el marco ampliado de UIScrollView relativo al tamaño original
- 23. Android NDK desborda dalvik JNI tabla de referencia local
- 24. TableLayout y el botón de Android cambiar el tamaño
- 25. Android: escribir y obtener el objeto
- 26. ¿Obtenga programáticamente el tamaño de la línea de caché?
- 27. Obtenga el tamaño de la respuesta HTTP en Java
- 28. Tamaño de un objeto de archivo abierto
- 29. Error de Dalvik VM: Excepción encontrada "Javax.xml.namespace.QName.class"
- 30. Obtenga el objeto de error de Javascript real con window.onerror
Mira esto: http://www.javapractices.com/topic/TopicAction.do?Id=83 – slayton
Se ve y se siente como un hack crummy ... Fui con la respuesta de Samuel. –
Simplemente curioso ... ¿cuál es su caso de uso real para necesitar eso? –