2009-02-28 20 views

Respuesta

9

¿Es aceptable que la mayoría de las personas tenga 1 o 2 gigabytes de RAM en su PCS?

Piense en esto, aunque su 200mb es pequeño y no hay nada de qué preocuparse dado un límite de 2Gb, todos los demás también tienen aplicaciones que toman gran cantidad de RAM. Agrégalos juntos y verás que el 2Gb que tengo se agota rápidamente. Resultado final: su aplicación parece lenta, consume muchos recursos y tarda mucho tiempo en iniciarse.

Creo que la gente comenzará a rebelarse contra las aplicaciones ávidas de recursos a menos que obtengan 'valor para ram'. se puede ver que esto comienza a suceder en los servidores, a medida que los sistemas virtualizados ganan popularidad: las personas se quejan de los requisitos de recursos y los costos de servidor correspondientes.

Como ejemplo del mundo real, solía codificar con VC6 en mi vieja máquina de 512Mb 1.7GHz, y todo iba bien: podía abrir 4 o 5 copias junto con Outlook, Word y un navegador web y mi máquina era sensible.

Hoy tengo un servidor doble de 2.8Ghz con 3Gb RAM, pero no puedo ejecutar más de 2 copias de Visual Studio 2008, ambos tardan años en iniciarse (ya que toda esa RAM aún tiene que ser copiada y configurar, junto con todos los otros costos de inicio que ahora tenemos), e incluso Word tarda años en cargar un documento.

Entonces, si puede reducir el uso de memoria, debería hacerlo. No piense que puede usar cualquier estructura/biblioteca/práctica inflada que desee con impunidad.

4
+0

La ley de Gate lo dice bien. – chappar

+1

La ley de Wirth es muy correcta, cuando estaba haciendo un trabajo de mainframe en los 80, cualquier pantalla que tardara más de 500 milisegundos en volver necesitaba una optimización. ¡Y mira cuánto tardan algunas páginas web en cargarse ahora! –

+0

@chappar. ¿Quiere decir que uno de 640k es suficiente para todos? – SystematicFrank

3

Hay un par de cosas que hay que pensar.

1/¿Tiene 256M ahora? No lo creo, mi máquina de memoria más pequeña es 2G, por lo que una aplicación de 200M no es un gran problema.

2a/De los 200M de los que hablas podría no ser memoria "real". Puede ser solo el espacio de direcciones, en cuyo caso podría no estar todo en la memoria física a la vez. Algunos bits solo pueden introducirse en la memoria física cuando eliges hacer cosas esotéricas.

2b/También se puede compartir entre otros procesos (como una DLL). Esto significa que solo podría mantenerse en la memoria física como una copia, pero estar presente en el espacio de direcciones de muchos procesos. De esta forma, el uso se amortiza en esos muchos procesos. Tanto el 2a como el 2b dependen de dónde viene realmente tu cifra de 200M (que no sé y, corriendo Linux, es poco probable que lo averigüe sin que me digas :-).

3/Incluso si se trata de memoria física, los sistemas operativos modernos no son como el antiguo DOS o Windows 3.1 - tienen memoria virtual donde los bits de las aplicaciones se pueden paginar (datos) o desechar por completo (código, ya siempre puede volver a cargar desde el ejecutable). La memoria virtual le brinda la posibilidad de utilizar mucha más memoria que su memoria física real.

+0

Cuando el administrador de tareas de Windows dice Uso de memoria como 200 MB, ¿a qué memoria se refiere? ¿Incluye también la memoria dll que está usando la aplicación? – chappar

+0

Ver http://stackoverflow.com/questions/588882/unmanaged-vc-applications-memory-consumption-on-windows-server Otro miembro publicó una respuesta sobre el 'Process Explorer' que le mostraría esa información. – uzbones

+0

No estoy hablando de memoria física o virtual. Estoy hablando del uso total de memoria de una aplicación. La memoria virtual es el camino para que una aplicación utilice una gran cantidad de memoria en una memoria física limitada. Por lo tanto, si la memoria física es pequeña, ralentiza la máquina ya que el sistema operativo tiene que intercambiar y cambiar. – chappar

1

Hace unos años, 256 MB era la norma para una PC, luego Outlook consumía unos 30 - 35 MB más o menos de memoria, eso es alrededor del 10% de la memoria disponible, ahora las PC tienen 2 GB o más como norma, y las perspectivas consumen 200 MB de memoria, eso es aproximadamente un 10% también.

La primera conclusión: a medida que hay más memoria disponible, las aplicaciones usan más.

Segunda conclusión: independientemente del marco de tiempo que elijas, hay aplicaciones que son verdaderas cerdas de memoria (como Outlook) y aplicaciones que son muy eficientes en cuanto a memoria.

Tercera conclusión: el consumo de memoria de una aplicación no puede reducirse con el tiempo, de lo contrario 640K habría sido suficiente incluso hoy en día.

3

Muchas aplicaciones modernas aprovecharán la existencia de más memoria para almacenar en caché más. Algunos como Firefox y SQL Server tienen configuraciones explícitas para la cantidad de memoria que usarán. En mi opinión, es una tontería no usar la memoria disponible: ¿de qué sirve tener 2GB de RAM si todas tus aplicaciones se quedan a 10MB dejando el 90% de tu memoria física sin usar? Por supuesto, si su aplicación utiliza el almacenamiento en caché de esta manera, será mejor que libere esa memoria si se inicia el agolpamiento de archivos de página, o permita que el usuario limite el tamaño de caché manualmente.

Puede ver la ventaja de esto ejecutando una consulta de tamaño decente contra el servidor SQL. La primera vez que ejecuta la consulta, puede tomar 10 segundos. Pero cuando ejecuta nuevamente esa consulta exacta, lleva menos de un segundo, ¿por qué? El plan de consulta solo se compiló por primera vez y se almacenó en caché para su uso posterior. Las páginas de la base de datos que se necesitaban leer solo se cargaban desde el disco la primera vez; la segunda vez, todavía se almacenaban en caché en la memoria RAM. Si se hace correctamente, cuanta más memoria use para el almacenamiento en caché (hasta que se encuentre con paginación) más rápido podrá volver a acceder a los datos. Verá lo mismo en documentos grandes (por ejemplo, en Word y Acrobat): cuando se desplaza a áreas nuevas de un documento, las cosas son lentas, pero una vez que se procesa y almacena en caché, las cosas se aceleran. Si no tiene suficiente memoria, esa memoria caché se sobrescribe y las partes anteriores del documento vuelven a ser lentas.

2

Si puede hacer un buen uso de la memoria RAM, es su responsabilidad para usarla.

+0

no solo para usarlo; pero para usarlo responsablemente –

0

Depende completamente de la aplicación.

2

Sí, es perfectamente normal. También se cambió algo grande, ya que 256MB eran normales ... ¡y no olvides que antes se suponía que los 640 Kb serían suficientes para todos!

Ahora la mayoría de las soluciones de software están compiladas con un recolector de basura: C#, Java, Ruby, Python ... a todos les encantan porque ciertamente el desarrollo puede ser más rápido, sin embargo hay un problema técnico.

El mismo programa puede ser sin pérdida de memoria con desasignación de memoria manual o automática. Sin embargo, en el segundo caso, es probable que el consumo de memoria crezca. ¿Por qué? En el primer caso, la memoria se desasigna y se mantiene limpia inmediatamente después de que algo se vuelve inútil (basura). Sin embargo, se necesita tiempo y poder de cálculo para detectarlo automáticamente, por lo tanto, la mayoría de los recolectores (a excepción del recuento de referencias) esperan a que se acumule la basura para que valga la pena el costo de la exploración. Mientras más esperas, más basura puedes barrer con el costo de un golpe, pero se necesita más memoria para acumular esa basura. Si intenta forzar al coleccionista constantemente, su programa pasaría más tiempo explorando la memoria que trabajando en sus problemas.

Puede estar completamente seguro de que mientras los programadores obtengan más recursos, los sacrificarán utilizando herramientas más pesadas a cambio de más libertad, abstracción y un desarrollo más rápido.

Cuestiones relacionadas