Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Java: Общие вопросы > Изменение размера стека и heap |
Автор: world 2.2.2011, 23:39 | ||
Доброе время суток. Уважаемые форумчане, подскажите, пожалуйста, есть ли в джаве способ изменить размер стека и кучи из кода программы, каккой либо директивой, без изменения настроек компилятора, по типу
|
Автор: aleksandy 3.2.2011, 06:00 | ||
Насколько мне изместно размер кучи можно указать при помощи параметров
З.Ы. Параметры работают в SunOracleJVM |
Автор: world 3.2.2011, 12:12 | ||
Ну это параметры компилятора, указываемые в командной строке, а у меня доступа к ним не будет ( |
Автор: sergioK1 3.2.2011, 19:44 |
хотя стек по определению задаеться до запуска программы, директив прекомпайлера в жаве нет , т,е нужно запускать родной код на С, под конкретную OS. до запуска жава программы, какое то извращение ![]() P.S. А в чем задача то ? Может изначально есть другое решение? |
Автор: jk1 3.2.2011, 23:46 | ||||||
... это с процессом компиляции исходника в байткод не связано вообще никак.
Вероятно потому, что нет никаких "прекомпайлеров". На этапе компиляции о размере стека говорить бессмысленно, что уж тут говорить о прекомпиляции.
Полностью согласен. По сути: размер выделяемой памяти и стека задается только ключами JVM при запуске уже скомпилированного кода, больше никак. |
Автор: sergioK1 4.2.2011, 13:21 | ||||||||
1) Байт код или не байт код, размер стэка на уровне процесса задаеться заранее, размер стэка у среда можно задать в функции CreateThread для контретной ОS. 2)Если быть точным,то прекомпайлер, есть только доступ к нему найтивный 3) Раз уж пошла такая пьянка , то мне стало интересно , размер стэка задаеться ключами JVM , то должна быть возможность этот размер проверить? или это недоделки Java ![]() |
Автор: jk1 4.2.2011, 15:06 | ||
Это не недоделки, сама идеология языка не подразумевает прямой работы с памятью или стеком. http://www.odi.ch/weblog/posting.php?posting=411 человек пытается проводить тесты чтобы выяснить, как оценивать размер стека в райнтайме. Результат: практически никак, это обусловлено многими особенностями реализации среды выполнения Java, в том числе динамической компиляцией и отказом от уже скомпилированного кода в силу определенных обстоятельств. Таким образом, если Ваш код зависит от конкретной глубины стека (Мы не берем крайние случаи про глубину = 2) и его поведение различается при максимуме 1500 и 5000 (например), значит менять надо код. Если же задача настолько специфична, что без зависимости от глубины стека никуда - то Java как язык не подходит для решения этой задачи. |
Автор: sergioK1 5.2.2011, 22:49 | ||||
глубина стека это что такое? размер это понятно, 2 чего ?Mв ? 1500-5000 ? |
Автор: jk1 6.2.2011, 11:08 |
Глубина стека вызовов - максимальное количество последовательный вызовов в рамках одной рекурсивной цепочки. Из формулировки проблемы совершенно неясно, что собственно мешает: маленький размер стека в байтах или маленькая его глубина. В любом случае, если не хватает - увеличиваем -Xss. Если увеличивать значение параметра больше некуда (ресурсы не позволяют), а проблема не решается - садимся переписывать код. Мне не встречалось настолько специфичных задач, чтобы эти два простых правила не давали в итоге решения проблемы. |