Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Изменение размера стека и heap 
V
    Опции темы
world
Дата 2.2.2011, 23:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 133
Регистрация: 2.10.2009
Где: Харьков

Репутация: нет
Всего: 12



Доброе время суток.

Уважаемые форумчане, подскажите, пожалуйста, есть ли в джаве способ изменить размер стека и кучи из кода программы, каккой либо директивой, без изменения настроек компилятора, по типу 

Код

#pragma comment(linker, "/STACK:10000000")


Это сообщение отредактировал(а) world - 3.2.2011, 01:03
--------------------
Say what you mean, and mean what you say. Robert Wilson Cody
PM MAIL WWW ICQ Skype   Вверх
aleksandy
Дата 3.2.2011, 06:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 260
Регистрация: 17.12.2006

Репутация: 4
Всего: 5



Насколько мне изместно размер кучи можно указать при помощи параметров
Код

-Xms<size>        set initial Java heap size
-Xmx<size>        set maximum Java heap size
-Xss<size>        set java thread stack size


З.Ы. Параметры работают в SunOracleJVM
PM   Вверх
world
Дата 3.2.2011, 12:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 133
Регистрация: 2.10.2009
Где: Харьков

Репутация: нет
Всего: 12



Цитата

размер кучи можно указать при помощи параметров


Ну это параметры компилятора, указываемые в командной строке, а у меня доступа к ним не будет (
--------------------
Say what you mean, and mean what you say. Robert Wilson Cody
PM MAIL WWW ICQ Skype   Вверх
LSD
Дата 3.2.2011, 12:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(world @  3.2.2011,  13:12 Найти цитируемый пост)
Ну это параметры компилятора, указываемые в командной строке, а у меня доступа к ним не будет ( 

Не компилятора а JRE. А в самом байткоде такие параметры как размер стека и кучи вообще смысла не имеют.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
sergioK1
Дата 3.2.2011, 19:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 417
Регистрация: 30.1.2011

Репутация: нет
Всего: нет



хотя стек по определению задаеться до запуска программы, директив прекомпайлера в жаве нет ,
т,е  нужно запускать родной код на С, под конкретную OS. до запуска жава программы,
какое то извращение  smile 

P.S.
А в чем задача то ? Может изначально есть другое решение? 

PM MAIL   Вверх
jk1
Дата 3.2.2011, 23:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1168
Регистрация: 17.10.2008
Где: Санкт-Петербург

Репутация: 40
Всего: 75



Цитата

хотя стек по определению задаеться до запуска программы

... это с процессом компиляции исходника в байткод не связано вообще никак.

Цитата

директив прекомпайлера в жаве нет

Вероятно потому, что нет никаких "прекомпайлеров". На этапе компиляции о размере стека говорить бессмысленно, что уж тут говорить о прекомпиляции.

Цитата

какое то извращение

Полностью согласен.

По сути: размер выделяемой памяти и стека задается только ключами JVM при запуске уже скомпилированного кода, больше никак.





--------------------
Opinions are like assholes — everybody has one
PM MAIL   Вверх
sergioK1
Дата 4.2.2011, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 417
Регистрация: 30.1.2011

Репутация: нет
Всего: нет



Цитата(jk1 @ 3.2.2011,  23:46)
Цитата

хотя стек по определению задаеться до запуска программы

... это с процессом компиляции исходника в байткод не связано вообще никак.

Цитата

директив прекомпайлера в жаве нет

Вероятно потому, что нет никаких "прекомпайлеров". На этапе компиляции о размере стека говорить бессмысленно, что уж тут говорить о прекомпиляции.

Цитата

какое то извращение

Полностью согласен.

По сути: размер выделяемой памяти и стека задается только ключами JVM при запуске уже скомпилированного кода, больше никак.

1) Байт код или не байт код, размер стэка на уровне процесса задаеться заранее, размер стэка у среда можно 
задать в функции CreateThread для контретной  ОS.

2)Если быть точным,то   прекомпайлер,  есть только доступ к нему найтивный 
3) Раз уж пошла такая пьянка , то мне стало интересно  , размер стэка задаеться  ключами JVM ,
   то должна быть возможность этот размер проверить? или это недоделки Java  smile ?

PM MAIL   Вверх
jk1
Дата 4.2.2011, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1168
Регистрация: 17.10.2008
Где: Санкт-Петербург

Репутация: 40
Всего: 75



Цитата

то должна быть возможность этот размер проверить? или это недоделки Java  ?


Это не недоделки, сама идеология языка не подразумевает прямой работы с памятью или стеком.
Вот тут человек пытается проводить тесты чтобы выяснить, как оценивать размер стека в райнтайме.

Результат: практически никак, это обусловлено многими особенностями реализации среды выполнения Java, в том числе динамической компиляцией и отказом от уже скомпилированного кода в силу определенных обстоятельств.

Таким образом, если Ваш код зависит от конкретной глубины стека (Мы не берем крайние случаи про глубину = 2) и его поведение различается при максимуме 1500 и 5000 (например), значит менять надо код. Если же задача настолько специфична, что без зависимости от глубины стека никуда - то Java как язык не подходит для решения этой задачи.


--------------------
Opinions are like assholes — everybody has one
PM MAIL   Вверх
sergioK1
Дата 5.2.2011, 22:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 417
Регистрация: 30.1.2011

Репутация: нет
Всего: нет



Цитата(jk1 @ 4.2.2011,  15:06)
Цитата

то должна быть возможность этот размер проверить? или это недоделки Java  ?


Это не недоделки, сама идеология языка не подразумевает прямой работы с памятью или стеком.
Вот тут человек пытается проводить тесты чтобы выяснить, как оценивать размер стека в райнтайме.


Таким образом, если Ваш код зависит от конкретной глубины стека (Мы не берем крайние случаи про глубину = 2) и его поведение различается при максимуме 1500 и 5000 (например), значит менять надо код. Если же задача настолько специфична, что без зависимости от глубины стека никуда - то Java как язык не подходит для решения этой задачи.

глубина стека это что такое?  размер это понятно,

2 чего ?Mв ? 1500-5000 ?


PM MAIL   Вверх
jk1
Дата 6.2.2011, 11:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1168
Регистрация: 17.10.2008
Где: Санкт-Петербург

Репутация: 40
Всего: 75



Глубина стека вызовов - максимальное количество последовательный вызовов в рамках одной рекурсивной цепочки.

Из формулировки проблемы совершенно неясно, что собственно мешает: маленький размер стека в байтах или маленькая его глубина.

В любом случае, если не хватает - увеличиваем -Xss. 
Если увеличивать значение параметра больше некуда (ресурсы не позволяют), а проблема не решается - садимся переписывать код.

Мне не встречалось настолько специфичных задач, чтобы эти два простых правила не давали в итоге решения проблемы.

Это сообщение отредактировал(а) jk1 - 6.2.2011, 11:08


--------------------
Opinions are like assholes — everybody has one
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1084 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.