2011-01-11 20 views
6

He intentado hacer que webstart se volque en un volcado de pila cuando se queda sin memoria.Vaciado de volcado webstart de Java

Conozco la forma de jmap/jconsole de hacerlo, pero lo que realmente quiero hacer es agregar la opción al archivo jnlp y he intentado las siguientes opciones.

  1. versión j2se = "1.6+" Java-VM-args = "- servidor + HeapDumpOnOutOfMemoryError" max-heap-size = "768M"
  2. versión j2se = "1.6+" java-vm-args = "-server -XX: + HeapDumpOnOutOfMemoryError" en heap-tamaño máximo = "768M"
+1

¿Qué resultados obtiene cuando ejecuta el programa con esas opciones? – Davidann

+0

ya que implica manipular la computadora del cliente (volcar un archivo a la computadora local). No me sorprendería si hay controles de seguridad en esta opción. puede ser completamente denegado, o puede requerir permisos adicionales. – jtahlborn

+0

¿Ha intentado también especificar la ruta agregando, por ejemplo, '-XX: HeapDumpPath =/tmp'? –

Respuesta

2

será sin duda no trabajar cuando usted pone esta opción para el archivo JNLP. Hay una lista de opciones permitidas y las demás serán ignoradas. Puede consultar la lista de opciones de JVM disponibles en el documentation.

Tenga en cuenta que la idea es que el usuario final ejecute su aplicación en su computadora. ¿Qué harías con el volcado del montón en su comp? Puede ser cualquier persona en el mundo ejecutando su aplicación. No tendrá mucho sentido si se le permitió hacer esto con la JVM de los usuarios finales a través de su archivo JNLP.

La única situación en la que puedo pensar sería si tiene acceso a esa computadora y puede consultar el volcado más adelante. En ese caso (usted como usuario final solicita el volcado) en realidad es posible si omite la ejecución automática del archivo jnlp desde el navegador y lo ejecuta usted mismo a través del comando javaws. Las medidas que he tomado y que conducen al éxito fueron los siguientes (asumir el archivo jnlp era testOOM.jnlp y se encuentra en Windows):

  1. Descargar el archivo JNLP
  2. desde la línea de comandos vaya al directorio con el
  3. archivo JNLP
  4. ejecutar javaws -verbose -J-XX:+HeapDumpOnOutOfMemoryError testOOM.jnlp

Usando esta la aplicación se pondrá en marcha en la misma forma que desde el navegador. Pero observe la opción -J que le permite suministrar opciones de JVM a la JVM. Esto está bien porque es el cliente de usuario ebd quien solicitó el volcado.

En OutOfMemoryError, el volcado de pila se almacenará en el mismo directorio donde ejecuta el comando javaws.

+0

Muchas gracias, estamos distribuyendo internamente para que podamos obtener los vertederos, veremos si podemos obtener un script para ejecutarlo – benjipete

+0

Me complace ayudar :) –

+0

Tiene mucho sentido para mí que un desarrollador pueda querer una aplicación webstart para generar un volcado de pila Tienes razón en que en una aplicación de producción con muchos usuarios con los que el desarrollador no tiene contacto directo, esto no sería útil. Sin embargo, durante el desarrollo hay usuarios beta, usuarios de prueba y usuarios que también están en el equipo de desarrollo. Este es mi caso ... y son lo suficientemente inteligentes como para obtener el archivo de volcado del montón si se genera.Tener esta opción sería excepcionalmente útil y tiene mucho sentido para mí. – Jason

Cuestiones relacionadas