В чем разница между -Xss и -XX:ThreadStackSize?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 В чем разница между -Xss и -XX:ThreadStackSize?

Сообщение Anonymous »

Я просто хочу контролировать размер стека для всех моих потоков в Java (groovy) приложении. Я знаю, что для виртуальной машины Hotspot Oracle это делают два параметра ( и XX:ThreadStackSize).

Какой из них предпочтительнее? Есть ли между ними разница? Что касается Open JDK 7, кто-то спросил в списке рассылки, заявив, что -Xss для виртуальной машины Hotpot аналогичен -XX:ThreadStackSize.

Дело в том, что я измеряю, сколько потоков можно запустить в моей системе.
Мой отличный скрипт, который это делает, выглядит так:

Код: Выделить всё

int count = 0

def printCountThreads = {
println("XXX There were started $count threads.")
}

try {
while(true){
new Thread({Thread.sleep(Integer.MAX_VALUE)}).start()
count++
if(count % 1000 == 0){
printCountThreads()
}
}
} catch (Throwable e){
printCountThreads()
throw e
}
Интересно, что я просто получаю меньше потоков, используя -

Код: Выделить всё

XX:ThreadStackSize. Я запускаю отличное приложение с различным содержимым в переменной среды JAVA_OPTS. 

groovy countmax-threads.groovy
Когда я устанавливаю для JAVA_OPTS значение -XX:ThreadStackSize=2m, я получаю около 1000 запущенных потоков, пока не будет использована память. Но когда я использую JAVA_OPTS='-Xss2m', я получаю около 32000 потоков, пока не возникнет ожидаемая ошибка. Похоже, что -Xss вообще не работает.

Я использую


версию Java "1.8.0_05"

Среда выполнения Java(TM) SE (сборка 1.8.0_05-b13)

64-разрядная серверная виртуальная машина Java HotSpot(TM) (сборка 25.5-b02, смешанный режим)


на 64-разрядной машине Ubuntu 14.04 с четырьмя аппаратными потоками и примерно 8 ГБ оперативной памяти.
ОБНОВЛЕНИЕ:

Я еще раз проверил это на своем 64-разрядном компьютере с Windows 7 и другом JDK:

< цитата>
Java-версия "1.8.0_20"
Среда выполнения Java(TM) SE (сборка 1.8.0_20-b26)
64-разрядная серверная виртуальная машина Java HotSpot(TM) (сборка 25.20-b23, смешанный режим)


и там -Xss и -XX:ThreadStackSize работают как ожидаемо (как указано в некоторых ответах). Поэтому я предполагаю, что это проблема, специфичная для Linux, или даже ошибка в JDK версии 1.8.05.

Подробнее здесь: https://stackoverflow.com/questions/287 ... dstacksize
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»