Asignar más espacio de almacenamiento dinámico a un archivo java
Pregunta
Cuando ejecuta un programa a través de la línea de comandos, puede usar java -Xms -Xmx
para especificar los tamaños de almacenamiento dinámico. Si el programa se va a ejecutar haciendo doble clic en un archivo .jar, ¿hay alguna forma de usar más almacenamiento que el estándar?
Solución
No. Es por eso que a menudo hago un archivo .bat o .sh con esos parámetros y dirijo a los usuarios para que lo ejecuten en lugar de .jar. Desafortunadamente, es un poco feo tener que abrir una ventana del símbolo del sistema, pero eso no puede ser ayudado.
Como beneficio adicional, si la aplicación se bloquea, puede indicar a los usuarios que pongan pause
en el archivo de proceso por lotes (o hágalo usted mismo), y luego puede ver cualquier rastro de pila que se produzca.
Editar: También puede usar un contenedor ejecutable como JSmooth o < a href = "http://launch4j.sourceforge.net/" rel = "noreferrer"> Launch4J en lugar de un archivo por lotes. Sin embargo, perderías algo de compatibilidad multiplataforma.
Otros consejos
En lugar de hacer doble clic directamente en el archivo .jar, puede usar un archivo por lotes que ejecute java -jar -Xms -Xmx your_file.jar
. Desde el punto de vista del usuario, es el mismo, pero le da más control sobre el comando que realmente se ejecuta.
Puede hacer que el jar se inicie de nuevo con Runtime.getRuntime (). exec () con las opciones que desee. El jar puede contener más de un método main () (en diferentes clases) y puede hacer que una llame a la otra a través de un exec ().
Puede usar JSmooth o un envoltorio similar, que crea un archivo EXE que inicia el JVM con el Parámetros necesarios. De esa manera, puede evitar tener un archivo .bat y su cuadro de diálogo de consola. Aún una forma más es iniciar el programa real en un nuevo proceso utilizando Runtime.exec o ProcessBuilder.