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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как увеличить размер кучи? java.lang.OutOfMemoryError 
V
    Опции темы
math64
Дата 17.4.2009, 08:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

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



Цитата(Bodro @  16.4.2009,  14:17 Найти цитируемый пост)
Да нельзя так делать! Я пишу коммерческое ПО. Если у пользователя нет прав на создание папок? Никаких инсталляторов, никаких распаковок и прочего. Должен быть один файл. Его надо запустить и чтобы всё работало.

А имеешь ли ты право делать так?
Коммерческий jar может не разрешать так делать.
А если так сделать с jar с лицензией GNU, твой jar тоже должен иметь лицензию GNU, и ты должен открыть исходники.

/var/tmp должен быть открыт на запись, но там может не хватить места, чтобы развернуться.
PM   Вверх
Bodro
Дата 17.4.2009, 10:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 27.1.2006
Где: Россия, г. Рязань

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



Цитата(math64 @  17.4.2009,  08:40 Найти цитируемый пост)
А имеешь ли ты право делать так?
Коммерческий jar может не разрешать так делать.
А если так сделать с jar с лицензией GNU, твой jar тоже должен иметь лицензию GNU, и ты должен открыть исходники.

/var/tmp должен быть открыт на запись, но там может не хватить места, чтобы развернуться. 

Я пишу коммерческое ПО под нашей лицензией. С закрытыми исходниками. Условия лицензии One-Jar соблюдены.
А для пользователя нужно предоставить массу удобств. И программа работать будут не только в Linux, точнее она будет работать в основном в Windows и редко на других платформах. Создавать архив нельзя, потому что нельзя распаковываться. Если бы ты знал, какие бывают чудные пользователи!!! Небольшая трудность и они откажутся от ПО. Поэтому должно быть всё максимально удобно. Если поддерживается клик мышью по jar-файлу с автоматическим запуском, то так и должно быть. А если нет, то надо на сайте максимально понятно указать как запустить программу. Чтобы это было просто. Вот тебе всё понятно. А пользователю может быть не понятно. Он может вообще только что комп увидел и ему просто надо потыкать мышкой и получить результат. Так что должно быть всё просто.

А инсталлятор писать вообще нельзя! Под все платформы не напишешь. Да и сложно это, написать грамотный инсталлятор, который бы учёл все особенности.

Но всё равно большое спасибо!

Цитата(_and @  17.4.2009,  04:01 Найти цитируемый пост)
я тебе не зря по-моему предложил сделать точку входа по умолчанию класс который будет вызывать нужный с определенными параметрами и чего в этом не красивого. Для твоего варианта это по-моему единственный выход IMHO/
просто покопай в эту сторону еще может интересного найдешь ну и соответственно с нами поделись как найдешь  smile  

Сейчас я этот вопрос обсуждаю с начальством. Но понимаешь, тут есть проблема. Я сделаю подобную систему, как ты описал. Но и этого объёма памяти может не хватить. Вот что написано в официальном документе от Sun по поводу управления памятью memorymanagement_whitepaper.pdf:
Цитата

“On machines that are not server-class machines, the default values for JVM, garbage collector, and heap sizes
are
• the client JVM
• the serial garbage collector
• Initial heap size of 4MB
• Maximum heap size of 64MB”

“Heap Sizing
Section 5 tells what the default initial and maximum heap sizes are. Those sizes may be fine for many
applications, but if your analysis of a performance problem (see Section 7) or of an OutOfMemoryError
(discussed later in this section) indicates a problem with the size of a particular generation or of the entire heap,
you can modify the sizes via command line options specified in Section 8. For example, the default maximum
heap size of 64MB on non–server–class machines is often too small, so you can specify a larger size via the –Xmx
option.”

Так что если мне не хватит места, то необходимо вручную настраивать среду. Например так:
Код

java -Xms150m -Xmx1000m -jar SnapshotMyvM.jar

Сейчас вопрос остаётся открытый что делать с проблемой нехватки памяти.
Но я предерживаюсь мнения, что вообще надо всё оставить как есть и просто на сайте указать что в случае падения с ошибкой OutOfMemoryError необходимо запустить программу с параметрами -Xms, -Xmx, в которых указать необходимый размер кучи. Например:  -Xms150m -Xmx1000m.
Тогда кто понимает, настроит сам среду, а кто не понимает, просто с консоли введёт эти парметры и всё заработает. Но если и этого не хватит, то пусть или сам подбирает параметры или обратится в службу технической поддержки.
Мне кажется, это самый нормальный вариант.

Но вопрос решаю не я, а начальство.
PM MAIL WWW ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
_and
Дата 17.4.2009, 11:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-developer
*


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

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



Цитата(Bodro @  17.4.2009,  14:44 Найти цитируемый пост)
Но я предерживаюсь мнения, что вообще надо всё оставить как есть и просто на сайте указать что в случае падения с ошибкой OutOfMemoryError необходимо запустить программу с параметрами -Xms, -Xmx, в которых указать необходимый размер кучи. Например:  -Xms150m -Xmx1000m.

хозяин барин как говорится  smile , тока о каком удобстве может идти речь 
PM MAIL ICQ Jabber   Вверх
Bodro
Дата 17.4.2009, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 27.1.2006
Где: Россия, г. Рязань

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



Цитата(_and @  17.4.2009,  11:08 Найти цитируемый пост)
хозяин барин как говорится  smile , тока о каком удобстве может идти речь  

Ну а вариантов нормальных то больше нет! Писать загрузчик практчески бесполезно! Ну укажу я там максимальных размер 1000 МБ. Ну а если и его не хватит? Мне что, указывать все 4ГБ в качестве максимального? Если только так.
На небольших наборах данным мне хватит и 64 МБ по умолчанию. А если выше, то пусть настраивают.

Варианты то какие?
PM MAIL WWW ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
_and
Дата 17.4.2009, 11:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-developer
*


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

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



ставь -Xms256m -Xmx512m этого должно быть вполне достаточно
для большинства пользерова те у которых не помогло пусть в тех поддержку идут
и все ж попробуй профайлером отловить место утечки полезнее будет

Это сообщение отредактировал(а) _and - 17.4.2009, 11:34
PM MAIL ICQ Jabber   Вверх
barin_Student
Дата 17.4.2009, 11:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 488
Регистрация: 10.8.2007
Где: Казахстан , Алмат ы

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



Цитата(Bodro @ 17.4.2009,  14:29)
Цитата(_and @  17.4.2009,  11:08 Найти цитируемый пост)
хозяин барин как говорится  smile , тока о каком удобстве может идти речь  

Ну а вариантов нормальных то больше нет! Писать загрузчик практчески бесполезно! Ну укажу я там максимальных размер 1000 МБ. Ну а если и его не хватит? Мне что, указывать все 4ГБ в качестве максимального? Если только так.
На небольших наборах данным мне хватит и 64 МБ по умолчанию. А если выше, то пусть настраивают.

Варианты то какие?

1 гига не хватит? smile 
Может оптимизацией пора в плотную заняться? smile 


--------------------
Нехорошо блин!!!
PM MAIL   Вверх
Bodro
Дата 17.4.2009, 12:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 27.1.2006
Где: Россия, г. Рязань

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



Цитата(_and @  17.4.2009,  11:32 Найти цитируемый пост)
ставь -Xms256m -Xmx512m этого должно быть вполне достаточно
для большинства пользерова те у которых не помогло пусть в тех поддержку идут
и все ж попробуй профайлером отловить место утечки полезнее будет

Говорю же, у меня не воспроизводится, а воспроизводится на машине тестеров. Тестеры в другом городе. И у пользователей.
И профайлер запустить я не могу. Да к тому же у меня нет утечки памяти! А если есть, то не критичная.
Сам набор данных большой и хранить его надо в памяти. Иначе придётся сбрасывать на диск часть инфы, а это не желательно.
Да в этом случае придётся настраивать мусоросборник. Всё равно придётся лезть в консоль.

Цитата(barin_Student @  17.4.2009,  11:35 Найти цитируемый пост)
1 гига не хватит? smile 
Может оптимизацией пора в плотную заняться? smile  

Специфика работы программы такая. Задачи бывают разные. Дело тут не в оптимизации.
Если я буду долго оптимизировать код, то всё равно это не факт, что памяти хватит. Он упадёт не на этом наборе данных, но на чуть большем.
Сама суть программы требует хранения большого объёма данных в памяти.

Вот это то не зря написали:
Цитата

Heap Sizing
Section 5 tells what the default initial and maximum heap sizes are. Those sizes may be fine for many
applications, but if your analysis of a performance problem (see Section 7) or of an OutOfMemoryError
(discussed later in this section) indicates a problem with the size of a particular generation or of the entire heap,
you can modify the sizes via command line options specified in Section 8. For example, the default maximum
heap size of 64MB on non–server–class machines is often too small, so you can specify a larger size via the –Xmx
option.

PM MAIL WWW ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Bodro
Дата 20.4.2009, 11:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 27.1.2006
Где: Россия, г. Рязань

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



Тема закрыта.
PM MAIL WWW ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

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

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


 




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


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

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