Страница: 1 | 2 |
Вопрос: Программа в оперативке. Не многовато-ли?
Добавлено: 17.05.06 20:00
Автор вопроса: SPArk | Web-сайт:
Простенькая прога занимает в оперативке 11 метров. Для того, что я делаю это недопустительно. Что там в ней такое громоздкое вешается в оперативку и как это исправить?
Ответы
Всего ответов: 18
Номер ответа: 1
Автор ответа:
Yeputons
ICQ: 278444762
Вопросов: 71
Ответов: 179
Профиль | | #1
Добавлено: 17.05.06 20:24
Выложи хотя бы кусок кода проги. Или хотя бы расскажы шо она делайт
Номер ответа: 2
Автор ответа:
SPArk
ICQ: 190153075
Вопросов: 5
Ответов: 10
Web-сайт:
Профиль | | #2
Добавлено: 17.05.06 20:29
Да неважно что. Создаю прогу в которой 1 кнопка 1 действие- показывание messageBox'a то она занимает 10 в оперативке при запуске 10 метров. При то что сам ехе-шник не тянет даже на 100кб... Так как в дальнейшем то, что я делаю, предназначается для кпк, то 10 метров это слишком...
Номер ответа: 3
Автор ответа:
mich
ICQ: 261800349
Вопросов: 19
Ответов: 148
Web-сайт:
Профиль | | #3
Добавлено: 17.05.06 23:27
Private Declare Function SetProcessWorkingSetSize Lib "kernel32" Alias "SetProcessWorkingSetSize" (ByVal hProcess As Integer, ByVal dwMinimumWorkingSetSize As Integer, ByVal dwMaximumWorkingSetSize As Integer) As Integer
Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
MyBase.WndProc(m)
SetProcessWorkingSetSize(System.Diagnostics.Process.GetCurrentProcess.Handle.ToInt32, -1, -1)
End Sub
Номер ответа: 4
Автор ответа:
mich
ICQ: 261800349
Вопросов: 19
Ответов: 148
Web-сайт:
Профиль | | #4
Добавлено: 17.05.06 23:37
Работает?
Номер ответа: 5
Автор ответа:
SPArk
ICQ: 190153075
Вопросов: 5
Ответов: 10
Web-сайт:
Профиль | | #5
Добавлено: 18.05.06 00:58
Это максимально выделяемое ей... Проге то есть... У меня размер проге на старте надо уменьшить... Так как она в процессе работы конкретно увеличится. А просто ограничить её- это не выход =\... Тогда ей самой не хватит памяти. Хотелось бы всё таки знать, откуда там 10 метров при старте...
Номер ответа: 6
Автор ответа:
ПтирЯ
Вопросов: 11
Ответов: 71
Профиль | | #6
Добавлено: 18.05.06 09:28
Подгружаемые библиотеки вроде System.Windows.Forms и т.д.
референсов у твоей проги поди немало ...
а для КПК - вроде как в VS 2005 есть программыные средства для написания для мобильных устройств.
возможно те средства будут покомпактней в памяти
Номер ответа: 7
Автор ответа:
ViktorZ
ICQ: 271202919
Вопросов: 56
Ответов: 837
Профиль | | #7
Добавлено: 18.05.06 12:56
FrameworkCOmpact2003 кажись и называется.
Номер ответа: 8
Автор ответа:
HOOLIGAN
Вопросов: 0
Ответов: 1066
Профиль | | #8
Добавлено: 18.05.06 15:48
Вопросы об огромном размере занимаемой .net-программой памяти возникают практически через день.
Пора бы уже привыкнуть и смириться с этим.
Коль скоро вы сами не хотите писать код своей программы и используете готовые решения в виде подключаемых классов, то зачем жаловаться на размеры этих классов, референсов и т.д.
Пишите сами, без "средств" .net - и будут ваши программы маленькие, шустрые и нересурсоёмкие.
Номер ответа: 9
Автор ответа:
mich
ICQ: 261800349
Вопросов: 19
Ответов: 148
Web-сайт:
Профиль | | #9
Добавлено: 18.05.06 17:20
Не хулигань!)
А на чем написан Касперский и Explorer
Чего они занимают раз в 20 больше памяти чем прога на nete c использованием SetProcessWorkingSetSize.
Номер ответа: 10
Автор ответа:
Morpheus
Вопросов: 224
Ответов: 3777
Web-сайт:
Профиль | | #10
Добавлено: 18.05.06 17:28
Хз я прогу делал для кпк - пятнашки - на ВБ.НЕТ 2003 там и с рисунками и всё. да, количество доступных функций явно меньше, но и пямяти занимает мало. и идёт под обычным виндовсом (правда не смотрел скока занимает на обычном ПК)
Номер ответа: 11
Автор ответа:
mich
ICQ: 261800349
Вопросов: 19
Ответов: 148
Web-сайт:
Профиль | | #11
Добавлено: 18.05.06 17:31
Тестировал программу расчета статических характеристик идеального газа (курсач) на скорость.
vb6 значительно уступает vb.net
delphi примерно одном уровне.
"Сам" я может быть и написал на cpp. Но только до сдачи курсача ни как не успею.
Вот и выбирай.
Номер ответа: 12
Автор ответа:
dr.Faust
Вопросов: 6
Ответов: 26
Профиль | | #12
Добавлено: 21.05.06 14:06
SPArk не парься, на PDA будет занимать гораздо меньше. Моя текущая на PC хавает почти 12 метров, а на налодоннике 376 кб.
Номер ответа: 13
Автор ответа:
SPArk
ICQ: 190153075
Вопросов: 5
Ответов: 10
Web-сайт:
Профиль | | #13
Добавлено: 22.05.06 02:54
Спасибо за ответы. Спасибо за помощь
Номер ответа: 14
Автор ответа:
a849
Вопросов: 1
Ответов: 4
Профиль | | #14
Добавлено: 06.08.06 05:43
Не так давно писал прогу-резидент. Так вот - она занимала больше 50Mb. То, что она фактически это место не занимала, а резервировала спокойствия не приносило. Начал копаться и в итоге у меня получился такой вот модуль, который я вызываю в проге при каждом удобном случае. В модуле два параметра - максимальное и минимальное значение рабочего пространства в памяти. Если честно - уменьшайте до тех пор, пока прога при вызове модуля не начнет падать .
Вызов модуля можно назначить по таймеру, при активации окна или меню и т.д. У меня с 50Mb уменьшается до 3...7Mb.
'Модуль освобождения резервируемой памяти
Sub ClearMemory()
On Error GoTo UpMemory
Dim Min, Max As Integer
Min = 100000 'Мин. размер
Max = 500000 'Макс. размер System.Diagnostics.Process.GetCurrentProcess.MinWorkingSet = Min System.Diagnostics.Process.GetCurrentProcess.MaxWorkingSet = Max
End Sub
Вызов содуля:
Call ClearMemory
Номер ответа: 15
Автор ответа:
a849
Вопросов: 1
Ответов: 4
Профиль | | #15
Добавлено: 06.08.06 05:47
Гы, плохо редактирования сообщений нет. Вот он код в чистом виде:
Sub ClearMemory()
System.Diagnostics.Process.GetCurrentProcess.MinWorkingSet = 100000
System.Diagnostics.Process.GetCurrentProcess.MaxWorkingSet = 500000
End Sub