¿Por qué java -Xss no funciona?
Frecuentes
Visto 561 equipos
4
Tengo una versión antigua y especial de Linux:
Linux versión 2.4.32, gcc versión 2.95.4
con un JDK antiguo (versión 1.6.0_13) y un programa sencillo:
package threadtest;
/**
* tim
* 01.10.2014.
*/
public class ThreadCounter {
private static class SleepRunnable implements Runnable {
@Override
public void run() {
try {
while (true) {
Thread.sleep(60 * 1000);
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) throws InterruptedException {
try {
for (int i = 0; i < Integer.MAX_VALUE; i++) {
System.err.println("Thread started: " + i);
new Thread(new SleepRunnable()).start();
}
Thread.sleep(60 * 1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.exit(1);
}
}
Cuando inicio el programa (-server -Xms256M -Xmx256M -XX:MaxPermSize=64M -Xss#k
), opción -Xss no importa (-Xss64k or -Xss2G
). Parece que el tamaño de la pila es siempre de 2 m.
ulimits -s -> ilimitado
en /etc/security/limits.conf:
* soft nproc 65535
* hard nproc 65535
* soft nofile 65535
* hard nofile 65535
* soft stack 320
* hard stack 320
¿Qué estoy haciendo mal?
0 Respuestas
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas java linux multithreading jvm limits or haz tu propia pregunta.
¿Cómo está determinando cuál es el tamaño de pila de su proceso Java? - Peter Lawrey
el límite
stack
la configuración no es relevante. Solo se relacionan con el segmento de pila de procesos de JVM. Las pilas de subprocesos de Java se asignan en el segmento de datos. - Stephen CTal vez
k
orG
no son extensiones válidas para tamaños para el-X
opciones? Intentar-Xss16m
- Aaron Digulla@StephenC Su comentario debería ser una respuesta. - Solomon Slow
@jameslarge: si lo hubiera pensado, lo habría hecho. En mi opinión, no resuelve el problema del OP. Sin embargo, a menos que el OP responda al comentario de Peter, no creo que podamos ayudarlo. - Stephen C