Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 | 2 |

 

  Вопрос: Программа в оперативке. Не многовато-ли? Добавлено: 17.05.06 20:00  

Автор вопроса:  SPArk | Web-сайт: нету | ICQ: 190153075 
Простенькая прога занимает в оперативке 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-сайт: belkyokushin.net
 Профиль | | #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-сайт: belkyokushin.net
 Профиль | | #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-сайт: belkyokushin.net
 Профиль | | #9
Добавлено: 18.05.06 17:20
Не хулигань!)

А на чем написан Касперский и Explorer
Чего они занимают раз в 20 больше памяти чем прога на nete c использованием SetProcessWorkingSetSize.

Ответить

Номер ответа: 10
Автор ответа:
 Morpheus



Вопросов: 224
Ответов: 3777
 Web-сайт: xury.zx6.ru
 Профиль | | #10
Добавлено: 18.05.06 17:28
Хз я прогу делал для кпк - пятнашки - на ВБ.НЕТ 2003 там и с рисунками и всё. да, количество доступных функций явно меньше, но и пямяти занимает мало. и идёт под обычным виндовсом (правда не смотрел скока занимает на обычном ПК)

Ответить

Номер ответа: 11
Автор ответа:
 mich



ICQ: 261800349 

Вопросов: 19
Ответов: 148
 Web-сайт: belkyokushin.net
 Профиль | | #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

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам