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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ошибка OutOfMemoryError 
:(
    Опции темы
Reptor
Дата 23.7.2007, 17:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



собственно из-за чего может возникать данная ошибка и как ёё отловить? java.lang.OutOfMemoryError: Java heap space
PM MAIL ICQ   Вверх
LSD
Дата 23.7.2007, 17:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


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

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



Модератор: Название темы должно отражать ее суть!

Данная ошибка означает, что кончилась память у ява машины. Либо выделить больше памяти при запуске (ключ -Xmx) или экономнее расходовать память. Поищи по форуму тема неоднакратно обсуждалась.


--------------------
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   Вверх
Reptor
Дата 4.7.2008, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



снова у меня вылезла эта ошибка.. А как можно контролировать память  у ява машины?? вот я сейчас постараюсь исправить некоторые классы в которых переменные int хотя там в полне хватит byte. и как смотреть насколько легче приложению стало??

кстати LSD, это бывает во время копирования моих листов (тема недавняя с копированием листов).. может надо классы которые я копирую оптимизировать? забрать int де не надо.. или ещё может что?

а бывает что просто в конце выведет 

Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space


и всё приложение виснит

а бывает так

listMarking  = [Main.Markings@1cf662f, Main.Markings@13dd208, Main.Markings@1a8402c, Main.Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space

Markings@10d0eae, MainMarkings@3eec1a, Main.Markings@fedfb6, Main.Markings@1115152,  


и дальше список продолжается (это я просто вывод листов делал)



Это сообщение отредактировал(а) Reptor - 4.7.2008, 15:06
PM MAIL ICQ   Вверх
LSD
Дата 4.7.2008, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


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

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



Цитата(Reptor @  4.7.2008,  15:58 Найти цитируемый пост)
может надо классы которые я копирую оптимизировать? 

1. Посчитать сколько сами данные занимают, а то может оперативки не хватит на оба экземпляра. Тогда тут вообще ничего не поделаешь.
2. Там копирование идет через сериализацию, и используется буфер в памяти. Значит потребляемый объем памяти будет более чем в 3 раза больше, чем занимает один лист. Чтобы снизить расход памяти надо или сериализовывать на диск в файл (что медленнее) или сделать глубокое клонирование.


--------------------
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   Вверх
Reptor
Дата 4.7.2008, 18:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



LSD, ещё что интересно это то что копирование у меня осуществляется при нажатии на кнопку вот... и первый раз всё проходит нормально а вот когда я второй раз нажимаю тоесть делаю ещё +1 лист то тут то и вываливается эта ошибка... может с предыдущего раза что то остаётся висеть?
PM MAIL ICQ   Вверх
powerOn
Дата 4.7.2008, 22:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


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

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



Цитата(Reptor @  4.7.2008,  19:17 Найти цитируемый пост)
что интересно это то что копирование у меня осуществляется при нажатии на кнопку вот... и первый раз всё проходит нормально а вот когда я второй раз нажимаю тоесть делаю ещё +1 лист то тут то и вываливается эта ошибка... может с предыдущего раза что то остаётся висеть? 


ну код хотя бы свой приведи...


--------------------
user posted image нет времени думать - нужно писать КОД!

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


Эксперт
***


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

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



Код

public static Object serialClone(Serializable s)    {    
        try    {    
            ByteArrayOutputStream byteOut = new ByteArrayOutputStream();    
            ObjectOutputStream objectOut = new ObjectOutputStream(byteOut);    
            objectOut.writeObject(s);    
            objectOut.close();    
            ByteArrayInputStream byteIn = new ByteArrayInputStream(byteOut.toByteArray());    
            ObjectInputStream objectIn = new ObjectInputStream(byteIn);    
            Object copy = objectIn.readObject();    
            objectIn.close();    
            return copy;    
        }    
        catch(IOException e)    {    
         return null;// mustn't happend    
        }    
        catch(ClassNotFoundException e)        {    
         return null;// mustn't happend    
        }    
    }


вот этот метод выполняет копироапние list... 

и это выполняется при нажатии на кнопку - тоесть нажал на кнопку и создаётся новый объект в конструктор которого отдаю основные list и уже в конструкторе 

Код

this.list = (ArrayList<Points>) CurrentWorkspace.serialClone(list);


вот и я ещё раз проверял и вылетает при 2-ом копировании.. тоесть делаю один раз всё хорошо, потом создаю какието окна делаю какието операцыи и всё тоже хорошо и как только 2-ой раз копирую всё виснит с той ошибкой..... или виснит если делаю раз а потом сразу 2-ой...  smile  smile 








PM MAIL ICQ   Вверх
Reptor
Дата 5.7.2008, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



хотя нет.... бывает так что и на 1-ый раз


прийдёться переделывать так как LSD говорил

Это сообщение отредактировал(а) Reptor - 5.7.2008, 12:30
PM MAIL ICQ   Вверх
Reptor
Дата 7.7.2008, 10:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



кажись уже понятно в чём дело, а дело в том что я смотрел по процессам ну сколько памяти забирает моё приложение вот и оно начинает виснуть сразу как только оно переходит границу дето 90 000 K.. это всё зависает не на копировании потому что я его даже не включал просто так получалось что как раз на момент 2-ого копирования оно зашкаливало.... 

И тут у меня не понятки почему такое ограничение... что то я не понимаю а если надо большие порции данных грузить  и создавать объект??

В моём случаи создаётся объект и новый занимает дето порядка 11 000К но там я использую везде int а могу везде short или byte... как вы думаете это сможет уменшить размер моего объекта дето с 11 000К ну дето до 8 000 или 7 000 если у меня таких вот private int ну дето 30 а то и больше...??

и ещё дело в том что я работаю в Eclipse вот и он паралельно тоже берёт дето 120 000К. 
PM MAIL ICQ   Вверх
Reptor
Дата 7.7.2008, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



поменял типы но что то это совсем ничего не дало  smile  smile  smile 


PM MAIL ICQ   Вверх
Reptor
Дата 7.7.2008, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



хммм оказывается всё дело в этом 
Код


 panelPreview = new PreviewPanel(openFrameCount);
        if(this.type==0)
         panelPreview.setPreferredSize(new Dimension(1000,1000));
        else{
         panelPreview.setPreferredSize(new Dimension(3000,3000));
        }
        JScrollPane scrollPane = new JScrollPane(panelPreview);
        getContentPane().add(scrollPane);


чем больше размер тем больше памяти забирает

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

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

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


 




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


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

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