java jvm stack size

java - ¿Dónde encontrar el valor XSS predeterminado para Sun/Oracle JVM?



stack size (5)

¿Alguna vez alguien ha encontrado un solo documento de JVM con una lista de default XSS sizes para varias versiones de Sun / Oracle JVM y para diferentes sistemas operativos?

He podido encontrar esta tabla en los documentos jrockit jdk 5.0 , pero eso no es útil para aquellos que usan la JVM Sun / Oracle "normal".

Aprecio que el valor de XSS variará según el sistema operativo (y la versión JVM), así que tal vez no haya un solo documento que enumere todas las combinaciones recientes. Pero si algún lector aquí conoce algún documento individual que enumere al menos el valor XSS predeterminado para cada versión de JVM (o al menos 1.6 y 1.5), o incluso si solo es para algunos sistemas operativos, sería un gran comienzo.

Agregaré que la razón por la que esto es valioso es que a menudo vemos que las personas recomiendan (erróneamente, creo) que alguien puede resolver un problema cambiando el valor de XSS . Pero si no conoce su valor predeterminado, entonces no hay forma de saber si está aumentando o disminuyendo el valor por el cambio que alguien recomiende. Por lo general, no indican la versión / sistema operativo en el que se encuentran, por lo que es una mierda si su sugerencia te "ayudará".

Incluso mejor que algunos documentos, si alguien conoce una forma de consultar a la JVM para obtener el valor actual, ya sea desde la línea de comandos o mediante una llamada a la API, eso sería aún más valioso. Gracias.


Esta información ahora aparece en las Preguntas frecuentes de Oracle Hotspot oracle.com/technetwork/java/hotspotfaq-138619.html#threads_oom

Es posible que tenga un problema con el tamaño de pila predeterminado para subprocesos. En Java SE 6, el valor predeterminado en Sparc es 512k en la máquina virtual de 32 bits y 1024k en la máquina virtual de 64 bits. En x86 Solaris / Linux es 320k en la máquina virtual de 32 bits y 1024k en la máquina virtual de 64 bits.

En Windows, el tamaño de pila de subprocesos predeterminado se lee desde el binario (java.exe). A partir de Java SE 6, este valor es 320k en la máquina virtual de 32 bits y 1024k en la máquina virtual de 64 bits.

Puede reducir el tamaño de su pila ejecutando con la opción -Xss. Por ejemplo:

java -server -Xss64k

Tenga en cuenta que en algunas versiones de Windows, el sistema operativo puede redondear los tamaños de pila de subprocesos utilizando granularidad muy gruesa. Si el tamaño solicitado es menor que el tamaño predeterminado en 1 K o más, el tamaño de la pila se redondea al valor predeterminado; de lo contrario, el tamaño de la pila se redondea a un múltiplo de 1 MB.

64k es la menor cantidad de espacio de pila permitido por subproceso.


Hay configuraciones predeterminadas disponibles en la guía de usuario de IBM Java 6 ( source ):

Xss <tamaño> para hilos de Java de 32 bits:

AIX®: 256KB IBM®I: 256KB Linux: 256KB Windows: 256KB z/OS®: 256KB


Para hotspot depende de tu arquitectura y de lo que no.

El tamaño de pila predeterminado se puede encontrar en el código fuente en los archivos de encabezado que se relacionan con una plataforma dada, por ejemplo

búsqueda de códigos de google (edición: este servicio ha sido desactivado desde que se hizo esta respuesta, lamentablemente) ACTUALIZACIÓN: aquí hay un nuevo enlace de Nebelmann: Openjdk fuente: globals_windows_x86.hpp

No estoy seguro si esto ayuda pero es un comienzo


Puede encontrarlo en el sitio de Oracle bajo la opción "-XX: ThreadStackSize" que significa lo mismo que -Xss.


tratar:

java -XX:+PrintFlagsFinal -version | grep ThreadStackSize