He estado trabajando en un juego para Android y depurándolo en mi N1. El rendimiento fue desigual al principio. Luego trabajé en la limpieza de todas las asignaciones para evitar la recolección de basura. Esto mejoró mucho las cosas, pero todavía vi algunas recolecciones de basura que causaron pausas muy breves en la animación.Android Game Development and Garbage Collection
Después de tirarme de los pelos por un tiempo, noté que los identificadores de proceso que estaban haciendo la recolección de basura (GC_FOR_MALLOC) no eran mi identificación de proceso. El proceso Ids pertenecía a "Android System" y android.process.acore (determinado mediante el uso de la aplicación "Android System Info" del mercado). El proceso de acore estaba vinculado a un widget de escritorio llamado reloj digital. Desinstalé el widget y casi lo logro durante todo el juego sin pausas. Hubo una breve pausa para GC para "Sistema Android".
Lo siento por la larga explicación, pero ahora para mis preguntas:
- Cómo es posible que otros juegos no de vez en cuando tienen pausas debido a la del proceso del sistema GC (algo fuera de control del desarrollador)?
- En la línea de la primera pregunta, ¿cómo puedo manejar una aplicación diferente que causa GC que ralentiza mi proceso y causa hipo en mi juego?
Simplemente siento que hay algo que me falta, ya que otros juegos no tienen este problema.
Gracias
Si su aplicación es tan sensible al recolector de basura, lo está haciendo mal. – Falmarri
Puede tener mejor suerte en http://gamedev.stackexchange.com/ para preguntas específicas de desarrollo de juegos. No estoy seguro de que haya una respuesta fácil para esto. No puedes evitar las gc, solo minimizarlas. 2.3 incluye gc concurrente, pero eso no te ayuda mucho si quieres apuntar a plataformas anteriores. –