我有一个古老而特殊的Linux版本:
Linux版本2.4.32,gcc vercion 2.95.4
使用旧的JDK(版本1.6.0_13)和一个简单的程序:
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);
}
}
当我启动程序(-server -Xms256M -Xmx256M -XX:MaxPermSize=64M -Xss#k
)时,选项-Xss并不重要(-Xss64k or -Xss2G
)。看起来堆栈大小总是2米。
ulimits -s - &gt;无限
在/etc/security/limits.conf中:
* soft nproc 65535
* hard nproc 65535
* soft nofile 65535
* hard nofile 65535
* soft stack 320
* hard stack 320
我做错了什么?