¿Por qué Java utiliza tanta memoria real?

1

Java aparece constantemente como que utiliza 700 MB de memoria real. Esa es una buena parte del cambio en mi iMac de 4GB. Ni siquiera sé que estoy ejecutando una aplicación Java, nunca.

¿Alguna idea?

    
pregunta DrFloyd5 17.11.2012 - 04:49

3 respuestas

4

Esto se debe a la naturaleza de la tecnología de recolección de basura utilizada en Java. La liberación de la memoria en dichos sistemas se retrasa hasta que se alcanza algún umbral, o se agota la memoria, o pasa algún tiempo. Probablemente no esté utilizando todos esos 700 MB todo el tiempo (puede que sean solo 50 MB), pero el Monitor de actividad no tiene forma de mirar dentro de la máquina virtual Java y decir cuánto se usa realmente.

Normalmente, si no hay errores o fugas ( sí, los sistemas GC también pueden tener pérdidas ), Java debería abandonar la memoria no utilizada cada vez que su sistema se quede sin ella, por lo que no hay necesidad de preocuparse. ahora. Dice que, si no necesita el programa, no perjudicará la desinstalación de lo que se esté iniciando.

    
respondido por el hamstergene 17.11.2012 - 14:03
2

Abra el monitor de actividad, haga clic en el proceso de Java y presione Comando-I.

A partir de ahí, podrás averiguar de dónde provienen los procesos de dos maneras

1) Mira archivos abiertos y puertos Los archivos abiertos deberían dar una pista de dónde proviene el proceso o al menos de qué está leyendo y escribiendo.

2) Proceso de padres Puede hacer clic en este para abrir información sobre el proceso principal y rastrear la cadena principal para ver qué inició el proceso. Si es launchd, puedes mirar tu configuración de launchd para ver dónde hay una llamada java allí.

    
respondido por el ChristopherJ 17.11.2012 - 05:57
2

La explicación arcaica :

Las aplicaciones Java requieren una máquina virtual para ejecutarse porque no pueden ser generalmente no están compiladas directamente en el lenguaje de máquina (código nativo) para muchos procesadores, en lugar de eso, Java generalmente se cumple en bytecode . Java también es un lenguaje de programación orientado a objetos (OOP) de muy alto nivel, lo que significa que aunque el código de la aplicación en sí es mucho más fácil de mantener, objetos que son instanciados usarán mucha más memoria.

La explicación más moderna :

Sin embargo, muchos argumentan que el problema generalmente se debe más a las estructuras de datos y la arquitectura del programa Java, en lugar del código de bytes. Y tiendo a estar de acuerdo con eso.

Hay varias otras razones por las que las aplicaciones Java utilizan tantos recursos del sistema (como RAM). Por ejemplo, la mayoría de las aplicaciones modernas utilizan el juego de caracteres UTF-8 , que requiere más memoria por carácter, para cadenas (generalmente texto) ya que puede soportar tantos otros lenguajes 'símbolos. Y como tantas aplicaciones se dirigen a un enorme mercado internacional, están obligadas a usarlo.

Dicho esto, se puede decir que Java sigue siendo el lenguaje de programación más popular en este momento. Muchas aplicaciones que ejecuta su computadora están escritas en Java. Por eso.

    
respondido por el bought777 17.11.2012 - 07:40

Lea otras preguntas en las etiquetas