2010-01-15 25 views
10

Tengo una aplicación de escritorio java para buscar archivos y generalmente alcanza el límite de almacenamiento dinámico predeterminado muy pronto. No tendré acceso a todos los sistemas en los que se instalará, así que quiero aumentar el tamaño del almacenamiento dinámico de JVM en la aplicación. ¿Alguien puede ayudarme cómo puedo hacer que la programación en mi solicitudCómo aumentar el tamaño del almacenamiento dinámico de Java de forma programática

+2

¿Por qué no elige agregar un script inicial (bat o sh) con parámetros de inicio definidos para jvm (como Xmx) y desplegarlo junto con la aplicación en sí misma. –

+3

¿Cuál sería el punto de establecer un límite si alguna aplicación pudiera simplemente elevarla a voluntad? –

+0

no se pueden cambiar las restricciones de memoria de forma programada en una aplicación en ejecución –

Respuesta

4

No hay tal API estándar para hacerlo.

Le sugiero que utilice Java Web Start para invocar su aplicación (se puede usar para aplicaciones locales en la última versión de Sun Java 6) ya que le permite especificar valores para esto.

A continuación, puede tener tres o cuatro enlaces, cada uno de los cuales apunta exactamente a los mismos archivos pero con tamaños de pila "Tiny", "Medium", "Large", "Gigantic".

2

Eche un vistazo a algo como launch4j y considere implementar ejecutables donde puede controlar el límite cuando alguien comienza a ejecutar su aplicación.

No podrá hacer esto programáticamente.

2

Para aplicaciones de escritorio, sugiero proporcionar un iniciador que luego puede especificar el tamaño de memoria deseado. Además de la configuración de su JVM, también puede proporcionar un icono, asociaciones de archivos, etc.

Consulte este SO question para conocer las alternativas de implementación.

6

Configurar -Xmx a un concierto no significa que la JVM asignará esa cantidad de memoria al momento de la puesta en marcha. La JVM asignará solo -Xms (más gastos generales) hasta que se necesite más espacio en el montón. ¿Necesita proteger a sus usuarios contra la memoria virtual o una asignación de memoria fallida del sistema operativo? Si no, simplemente configure Xmx a un valor grande. Tenga en cuenta que las JVM de Windows 32bit a menudo ignorarán las configuraciones de Xmx superiores a 1.2Gig, por lo que es mejor no solicitar más de un concierto para estar seguros.

+1

Las JVM de 32 bits no ignorarán los tamaños máximos de montón grandes, sino que no se iniciarán. Solo configure -mx1200m o similar. (-mx funciona igual que -Xmx) –

Cuestiones relacionadas