Teren escribió:A ver, es raro, pero no tanto. Si no se vigila la RAM, puede que esté lo libre que debería estar o no borre la mierda de X app... Yo esta mañana me lo he encontrado con 294MB y sólo abierto el teléfono
.
De todas formas, es cosa del iOS 4 también. El 3 gestionaba mejor la memoria...
Exacto.
Creo que mucha gente no sabe lo que es la RAM o, directamente la asocia al consumo de recursos de la CPU, puede haber RAM consumida y no estar gastando recursos de CPU ni llamadas a HD, por consiguiente no cambiaría el consumo.
Cuando se diseña un programa, si no se hace pensando específicamente en que consuma pocos recursos, el gasto de RAM va a ser abultado, para intentar explicar un poco por encima el tema y que la gente lo pueda entender, para iOS se programa en ObjectiveC, algo muy similar a C+, no hay opción de buscar otras alternativas o incluso programar a más bajo nivel, eso tiene ventajas e inconvenientes, por una parte, es un lenguaje muy conocido y MUY potente, eso sí, si se sabe usar. En el tema que nos ocupa (RAM), hay dos formas de decirle al código que la debe usar, bien dejándole al compilador que la solicite dependiendo de lo que se necesite, o bien mapeando directamente en código la necesaria según las circunstancias, lo primero es raro verlo en programas complejos (al menos en exclusiva) y lo segundo que es lo más común tiene el problema de que hay que vigilar en todo momento que la RAM que no se use, se libere, los buenos programadores dan optimizado este paso al máximo, los menos buenos al intentar liberar no dejan de "conseguir" cuelgues en el programa ya que liberan una dirección de memoria que guardaba una variable que el programa necesita en un momento aleatorio (por poner un ejemplo), ¿y esto cómo lo solucionan?, muy fácil, no liberando memoria. Esto cuando no había multitarea lo hacía todo dios, ya que el único límite lo marcaba la memoria física total (y el homebrew solía tener al principio del código una linea que checkeaba la RAM disponible, y si era menos de una cantidad 'X', el programa no iniciaba (por si a la gente le daba por tener la App iPod abierta)), pero desde la multitarea hubo que "adaptarse" a las nuevas épocas, ahora Apple chequea a fondo los consumos en segundo plano antes de aceptar una App en la store, por lo que con las Apps oficiales no suele haber problema, pero eso no pasa en Cydia, allí cualquier persona con un compilador de ObjectiveC y un empaquetador de debs puede subir lo que quiera, por este motivo se ven algunos programas que podríamos denominar como "pequeños" y que sin embargo consumen una barbaridad, eso sin contar con muchos programas obsoletos de la época de iPhone OS3 y que la gente sigue usando a día de hoy, y, ¿qué pasa cuando se cierra o finaliza una App sin que de tiempo a llamar a la liberación de memoria?, pues que esa porción de memoria sigue ocupada (reservada), y seguirá hasta que el terminal se reinicie, y no por este motivo va a consumir más batería.
Yo creo que la mayoría, cuando os decimos que tengáis cuidado con lo que instaláis de Cydia os lo tomáis a coña o directamente ni lo leéis, total, ¿para qué?, sólo os diré por poner un simple ejemplo, que a mí no me costaría más de 10 minutos hacer un programa muy simple que enviase a un servidor de mi propiedad vuestros archivos de SMS, contactos y localización y que de cara al usuario fuese un programa que al pulsar simulase el sonido de un pedo mismamente y ponerlo en cydia (el 90% de los adolescentes se lo bajarían sin pensarlo), y cuando digo a mí, digo a cualquiera con unos mínimos, pero que muy muy mínimos conocimientos de programación y UNIX.
Perdón por el tochaco, espero que por lo menos a alguno le aclare las ideas.