java - móviles - manual de programacion android pdf
Aplicación de Java que usa mucha memoria. Utilice-Xmx? (3)
Tengo una aplicación java que usa aproximadamente 15G en una máquina con 16G. No sé si debo establecer el tamaño máximo del montón.
Si se configura, ¿el JVM comerá todo el ariete hasta el límite y luego comenzará la recolección de basura y parará todo mientras agita hasta 15G de objetos del montón?
De lo contrario, el JVM no afectará el rendimiento al no utilizar todo el ariete disponible en la máquina.
Mi vm específica es: Java HotSpot (TM) VM de servidor de 64 bits (compilación 1.6.0_03-b05, modo mixto).
Gracias
En Java 6, el tamaño de pila máximo predeterminado está determinado por la cantidad de memoria del sistema presente.
De acuerdo con la página Ergonomía del recolector de basura , el tamaño máximo de almacenamiento dinámico es:
Menor de 1/4 de la memoria física o 1GB. Antes de J2SE 5.0, el tamaño de pila máximo predeterminado era de 64 MB.
Al usar el -Xmx
se puede usar para cambiar el tamaño máximo del montón. Consulte la documentación del iniciador de aplicaciones Java para obtener detalles de uso.
Si no establece un tamaño máximo de -Xmx
dinámico (con -Xmx
), ¿no es el máximo predeterminado solo de 64 MB?
Entonces, ¿no fallará su aplicación con OutOfMemoryError
s si no la configura? Estoy confundido en esta pregunta. ¿Cómo puede funcionar su aplicación sin este interruptor?
-Xmx15G
establecerá el tamaño máximo de -Xmx15G
dinámico en 15 gigas. Java solo asignará lo que necesita mientras se ejecuta. Si no lo configura, solo utilizará el valor predeterminado. Para obtener información sobre el valor predeterminado, consulte esta publicación .
-Xms15G
establece el mínimo de 15 gigas. Esto obliga a Java a asignar 15 gigas de espacio en el montón antes de que comience a ejecutarse, ya sea que lo necesite o no.
Por lo general, puede establecerlos en los valores adecuados dependiendo de cómo sintonice la JVM.