crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
> Увеличение потребляемых ресурсов, Проблема с памятью
Thelearning
  опции профиля:
сообщение 11.3.2011, 23:58
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 5
Регистрация: 27.2.2011
Пользователь №: 2453

Спасибо сказали: 0 раз(а)




Репутация:   0  


Всем доброго времени суток!
Сразу оговорюсь C++ плотно не изучал, но появилась необходимость в изучении Qt4. Читаю книгу Макса Шлее "Qt 4.5 Профессиональное программирование на C++".
В книге есть пример с LCD индикатором и полосой прокрутки. Я добавил туда еще и прогрессбар.

Вопрос в следующем: при запуске программки, она потребляет определенное количество оперативной памяти, когда пользователь (в данном случае я) двигает ползунок, количество потребляемых ресурсов увеличивается, но при прекращении действий, не уменьшается. Таким образом если двигать ползунок долго и упорно, выделяемая на процесс память так же увеличивается постоянно и не уменьшается. :blink: Так и должно быть?? Получается, что со временем этот виджет будет кушать все больше и больше. Как это исправить??

Заранее спасибо! )))

Вот код:

#include <QtGui>

int main (int argc, char** argv)
{
    QApplication app(argc,argv);
    QWidget wgt;
    QLCDNumber* plcd = new QLCDNumber(4);
    QScrollBar* phsb = new QScrollBar(Qt::Horizontal);
    phsb->setRange(0,100);
    QProgressBar* prgb = new QProgressBar();

    QObject::connect(phsb, SIGNAL(valueChanged(int)),
                     plcd, SLOT(display(int)));
    QObject::connect(phsb, SIGNAL(valueChanged(int)),
                     prgb, SLOT(setValue(int)));

    QVBoxLayout* layout = new QVBoxLayout;
    layout->addWidget(plcd);
    layout->addWidget(prgb);
    layout->addWidget(phsb);
    wgt.setLayout(layout);

    wgt.resize(250,150);
    wgt.show();

    return app.exec();
}

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 12.3.2011, 12:32
Сообщение #2


фрилансер
******

Группа: Участник
Сообщений: 2941
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


а если убрать соединения этих двух сигналов - поведение такое же ? Может быть, глюк в LCD
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
abc
  опции профиля:
сообщение 12.3.2011, 12:57
Сообщение #3


Участник
**

Группа: Участник
Сообщений: 221
Регистрация: 16.12.2010
Из: СПб
Пользователь №: 2272

Спасибо сказали: 26 раз(а)




Репутация:   4  


запустил твою прогу. я бы сказал, что ты преувеличиваешь. Да, память забирает поначалу, но если подвигать окно по экрану, это тоже память подберёт. Ну, увеличилась она на 300 кб или типа того.. дальше не потребляется. думаю, всё в норме

ещё добавлю, что где-то (тут, может быть) читал, что диспетчеры показывают не ту инфу о памяти, которую ты ожидаешь... Ты думаешь, что каждый твой delete они должны отразить, а на самом деле память освободилась, а они этого не покажут.. вроде как для твоего процесса память освободилась, а ОС её не забрала за ненадобностью, вот ты и получаешь не ожидаемые данные... Прошу заметить, что это "из уст в уста")

Сообщение отредактировал abc - 12.3.2011, 13:12
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Thelearning
  опции профиля:
сообщение 12.3.2011, 19:51
Сообщение #4


Новичок


Группа: Новичок
Сообщений: 5
Регистрация: 27.2.2011
Пользователь №: 2453

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата
а если убрать соединения этих двух сигналов - поведение такое же ? Может быть, глюк в LCD

Поведение точно такое же. Причем не изменяется если убрать один из них, либо оба.

Цитата
запустил твою прогу. я бы сказал, что ты преувеличиваешь. Да, память забирает поначалу, но если подвигать окно по экрану, это тоже память подберёт. Ну, увеличилась она на 300 кб или типа того.. дальше не потребляется. думаю, всё в норме

Я тоже по началу подумал, что нормально все. Но поведение следующее: потребляемая память увеличивается более заметно если не просто водить ползунок из стороны в сторону, а нажимать левой кнопкой мыши по стрелкам полосы прокрутки... далее на определенном этапе процесс вроде прекращается, но если подождать несколько секунд и продолжить тыкать в полосу, но память растет опять. Я так за пару минут увеличил объем потребляемой памяти на 2 мб...

Цитата
что диспетчеры показывают не ту инфу о памяти, которую ты ожидаешь...

Тут абсолютно согласен. Использовать диспетчер задач стандартный (у мну ОС Windows 7) не очень интересно для выявления подобного рода ошибок. Но тем не менее тенденцию проследить можно. Возможно стоит просто сменить программку, которая отслеживает память??
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
abc
  опции профиля:
сообщение 12.3.2011, 20:58
Сообщение #5


Участник
**

Группа: Участник
Сообщений: 221
Регистрация: 16.12.2010
Из: СПб
Пользователь №: 2272

Спасибо сказали: 26 раз(а)




Репутация:   4  


ещё раз запустился, последил, нет, у меня ничего подобного не наблюдается, я под XP
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Thelearning
  опции профиля:
сообщение 12.3.2011, 21:47
Сообщение #6


Новичок


Группа: Новичок
Сообщений: 5
Регистрация: 27.2.2011
Пользователь №: 2453

Спасибо сказали: 0 раз(а)




Репутация:   0  


Наверно все таки действительно дело в диспетчере задач...ок )))

Спасибо за содействие !! ))) :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
abc
  опции профиля:
сообщение 13.3.2011, 1:07
Сообщение #7


Участник
**

Группа: Участник
Сообщений: 221
Регистрация: 16.12.2010
Из: СПб
Пользователь №: 2272

Спасибо сказали: 26 раз(а)




Репутация:   4  


не греши на Qt, вряд ли они могли допустить "страшные катаклизмы" :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 13.3.2011, 13:38
Сообщение #8


фрилансер
******

Группа: Участник
Сообщений: 2941
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


Цитата(Thelearning @ 12.3.2011, 21:51) *
(у мну ОС Windows 7)

я когда то себе для подобных исследовательских целей делал утилитку - попробуй. Под семёркой никогда не запускал, даже интересно, как она там себя поведёт ) В общем то, давно ей сам уже не пользовался, как-то без надобности
http://st.free-lance.ru/users/alex1153/upl...f93ae7def61.rar

Сообщение отредактировал Алексей1153 - 13.3.2011, 13:38
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Thelearning
  опции профиля:
сообщение 13.3.2011, 14:06
Сообщение #9


Новичок


Группа: Новичок
Сообщений: 5
Регистрация: 27.2.2011
Пользователь №: 2453

Спасибо сказали: 0 раз(а)




Репутация:   0  


Большое спасибо!!! )))) Обязательно попробую! )) Потом отпишусь как она под семеркой заводится ))
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 13.3.2011, 16:52
Сообщение #10


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Проверил ради интереса на Ubuntu c Qt 4.7
Совершенно не меняется загрузка ОЗУ, как было при запуске 4.1Mb - так после 5-и мин издевательств и осталось.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

2 страниц V   1 2 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 11.12.2024, 11:14