Ответ 1
попробовать:
java -XX:+PrintFlagsFinal -version | grep ThreadStackSize
Кто-нибудь когда-либо обнаружил единственный документ JVM, содержащий список default XSS sizes
для различных версий Sun/Oracle JVM и для разных ОС?
Мне удалось найти эту таблицу в jrockit jdk 5.0 docs, но это не полезно для тех, кто использует "нормальное" солнце /Oracle JVM.
Я понимаю, что значение XSS
будет меняться в зависимости от ОС (и версии JVM), поэтому, возможно, нет ни одного документа, в котором перечислены все последние комбинации. Но если какие-либо читатели здесь знают о каких-либо отдельных документах, которые перечисляют по крайней мере только значение по умолчанию XSS для каждой версии JVM (или, по крайней мере, 1,6 и 1,5), или даже если только для некоторых ОС, это будет отличный старт.
Я добавлю, что причиной этого является то, что часто мы видим, что люди рекомендуют (ошибочно, я думаю), что кто-то может решить проблему, изменив значение XSS
. Но если вы не знаете своего дефолта, то нет никакого способа узнать, повышаете ли вы или понижаете значение, независимо от того, что кто-то рекомендует. Обычно они не указывают версию/ОС, на которой они находятся, поэтому это может помочь вам помочь.
Даже лучше, чем какая-либо документация, если кто-нибудь знает способ запросить JVM для получения текущего значения, будь то из командной строки или через вызов API, это будет еще более ценным. Спасибо.
попробовать:
java -XX:+PrintFlagsFinal -version | grep ThreadStackSize
Эта информация теперь появляется в FAQ по Oracle Hotspot http://www.oracle.com/technetwork/java/hotspotfaq-138619.html#threads_oom
У вас может возникнуть проблема с размером стека по умолчанию для потоков. В Java SE 6 значение по умолчанию для Sparc равно 512k в 32-разрядной виртуальной машине и 1024k в 64-разрядной виртуальной машине. На x86 Solaris/Linux это 320 тыс. В 32-битной VM и 1024k в 64-разрядной VM.
В Windows размер стека по умолчанию считывается из двоичного файла (java.exe). Начиная с Java SE 6, это значение составляет 320 тыс. В 32-разрядной VM и 1024k в 64-разрядной VM.
Вы можете уменьшить размер стека, выполнив параметр -Xss. Например:
java -server -Xss64k
Обратите внимание, что в некоторых версиях Windows ОС может округлять размеры стека потоков, используя очень грубую детализацию. Если запрашиваемый размер меньше размера по умолчанию на 1 К или более, размер стека округляется до значения по умолчанию; в противном случае размер стека округляется до кратного 1 МБ.
64k - это наименьшее количество пространства стека, разрешенного для потока.
Вы можете найти на сайте Oracle в разделе "-XX: ThreadStackSize", что означает то же, что и -Xss.
Для точки доступа это зависит от вашей архитектуры, а что нет.
Размер стека по умолчанию можно найти в исходном коде в файлах заголовков, относящихся к данной платформе, например.
поиск кода Google (изменить: эта служба была отключена, так как этот ответ был сделан, к сожалению) UPDATE: здесь новая ссылка от Nebelmann: Источник Openjdk: globals_windows_x86.hpp
Не уверен, что это помогает, но его запуск
Доступны настройки по умолчанию, доступные в руководстве пользователя IBM Java 6 (источник):
Xss <size> для потоков Java 32 бит:
AIX®: 256KB
IBM®I: 256KB
Linux: 256KB
Windows: 256KB
z/OS®: 256KB