Страница: 1 | 2 |
Вопрос: Как снизить размер памяти под процесс ???
Добавлено: 10.04.06 20:45
Автор вопроса: AlexDerS
Написал небольшую программку в Visual Basic 2005 Express Edition.
Сама программа размером 1.2 Мб
Почему она когда запущена занимает 22 Мб виртуальной памяти?
Есть ли возможность уменьшить этот размер?
Ответы
Всего ответов: 25
Номер ответа: 1
Автор ответа:
trialist
Вопросов: 14
Ответов: 76
Профиль | | #1
Добавлено: 10.04.06 20:51
А что за программа, ты в ней большие БМП-картинки на форму не грузишь?
Номер ответа: 2
Автор ответа:
trialist
Вопросов: 14
Ответов: 76
Профиль | | #2
Добавлено: 10.04.06 20:52
А что за программа, ты в ней большие БМП-картинки на форму не грузишь?
Номер ответа: 3
Автор ответа:
trialist
Вопросов: 14
Ответов: 76
Профиль | | #3
Добавлено: 10.04.06 20:52
А что за программа, ты в ней большие БМП-картинки на форму не грузишь?
Номер ответа: 4
Автор ответа:
trialist
Вопросов: 14
Ответов: 76
Профиль | | #4
Добавлено: 10.04.06 20:53
Сори за копии, спасибо Билу за Експолерер
Номер ответа: 5
Автор ответа:
AlexDerS
Вопросов: 37
Ответов: 61
Профиль | | #5
Добавлено: 10.04.06 21:17
Программа использует Microsoft Internet Transfer Control (совсем немного)
3 формы.
иконка в трее и контекстное меню к ней.
порядка 10 png-картинок, каждая размером не более 8 Кб.
... вот и весь набор ...
может что-то гдето подкрутить надо?
Номер ответа: 6
Автор ответа:
HOOLIGAN
Вопросов: 0
Ответов: 1066
Профиль | | #6
Добавлено: 10.04.06 21:24
Пора бы уже привыкнуть, что .net-программы пожирают память нещадно. Ничего нигде не подкрутишь. Либо смириться, либо использовать для создания программ любой другой инструмент
Номер ответа: 7
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #7
Добавлено: 11.04.06 01:06
В .NET не следует использовать Microsoft Internet Transfer Control. Для работы с инетом там предусмотрены свои собственные средства. И вообще, следует по возможности избегать COM-объектов.
P.S. На размер занимаемой памяти это не повлияет.
Номер ответа: 8
Автор ответа:
AlexDerS
Вопросов: 37
Ответов: 61
Профиль | | #8
Добавлено: 11.04.06 10:32
Буду очень благодарен, если кто-нибудь объяснит мне, что нужно использовать, а главное как.
Задача простая:
отправить запрос на сервер, получить ответ и его обработать.
Ещё буду благодарен, если дадите сслочку на то, что следует почитать.
Просто я хорошо знаю PHP, но Visual Basic для меня тёмный лес...
А в книжке, которая к меня есть, ничего не написано о том, как смастерить проиложение работающее с Интернетом...
В общем помогите, буду бблагодарен.
Номер ответа: 9
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #9
Добавлено: 11.04.06 11:05
Нужно использовать PHP и fsockopen. Для GUI следует использовать PEAR'овский гуй или WinBinder
Номер ответа: 10
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #10
Добавлено: 11.04.06 11:15
ExitProcess aka End
Номер ответа: 11
Автор ответа:
AlexDerS
Вопросов: 37
Ответов: 61
Профиль | | #11
Добавлено: 11.04.06 12:03
Не сложилось у меня первое знакомство с WinBinder'ом...
Да он, в принципе, и не особенно нужен конкретно в этой ситуации.
Меня Visual Basic вполне устраивает, т.к основную работу делает сам (хотя за это и приходится платить пожираемыми ресурсами...)
НО!
Номер ответа: 12
Автор ответа:
vito
Разработчик Offline Client
Вопросов: 23
Ответов: 879
Web-сайт:
Профиль | | #12
Добавлено: 11.04.06 12:03
Например можно так сделать.
Dim req As WebRequest ' Reference to the Webrequest
' Wrap the stream access in a Try/Finally block to guarantee a timely
' release of the stream resources.
Try
' Access the file
fs = New FileStream("datafile.txt", FileMode.Open)
' Create the WebRequest instance
req = WebRequest.Create("http://localhost/SendAndReceiveDataWebPages/SendData.aspx"
' Use POST since we're sending content in the body.
req.Method = "POST"
' Copy from the file into the RequestStream
CopyData(fs, req.GetRequestStream())
Catch exp As Exception
MessageBox.Show(exp.Message, Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Error)
Exit Sub
Finally
Try
' Guarantee the streams will be closed
If Not req Is Nothing Then req.GetRequestStream.Close()
If Not fs Is Nothing Then fs.Close()
Catch
' Eat the error if we get one
End Try
End Try
Dim rsp As WebResponse
Try
' This actually sends the data to the Web Server
rsp = req.GetResponse()
If CType(rsp.Headers("Content-Length", Double) = 0 Then
MessageBox.Show("ata Sent Sucessfully.", Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
Catch exp As Exception
MessageBox.Show(exp.Message, Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Error)
Finally
Try
If Not rsp Is Nothing Then
rsp.Close()
End If
Catch
End Try
End Try
Номер ответа: 13
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #13
Добавлено: 11.04.06 12:42
Либо так:
Imports System.Net
Imports System.Collections.Specialized
Далее в коде:
Dim wc As New WebClient
'//Переменная для ответа сервера
Dim Result As String = ""
Try
With wc
'//Задаем неоходимую кодировку(в данном случае указана русская
'//при необходимости можешь использовать любую другую (UTF7,8,32 ASCII и т.д.)
.Encoding = System.Text.Encoding.GetEncoding(1251)
'//Если для подключения необходимо использовать Proxy Server
'//то сделать это можно следующим образом:
'// - вариант без авторизации на сервере
'.Proxy = New WebProxy("Название ProxyServer или IP-адрес", НомерПорта)
'// - вариант с авторизацией
'.Proxy = New WebProxy("Название ProxyServer или IP-адрес", НомерПорта)
'.Proxy.Credentials = New NetworkCredential("Твой логин", "Твой пароль"
'//Либо настройки прокси-сервера можешь взять из Internet Explorer
.Proxy = WebRequest.DefaultWebProxy
'//Если требует сервер, то добавляешь необходимые заголовки
'//из перечисления HttpRequestHeader, либо создаешь свои
With .Headers
.Add(HttpRequestHeader.UserAgent, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705"
.Add(HttpRequestHeader.AcceptLanguage, "ru"
.Add(HttpRequestHeader.ContentType, "application/x-www-form-urlencoded"
.Add(HttpRequestHeader.Referer, "http://vbnet.ru"
.Add("X-Powered", "EROS © 2006 N.Novgorod" '
End With
'//Создаем строку запроса, усли это надо
Dim MyQuery As New NameValueCollection
With MyQuery
.Add("user", "Вася"
.Add("password", "Пупкин"
.Add("namecolor", "#FF0000"
End With
.QueryString = MyQuery
'//Задаем адрес страницы на которую отправляем запрос
Dim MyURL As New Uri("http://vbnet.ru/"
'//Получаем ответ сервера
Result = .DownloadString(MyURL)
End With
Catch ex As Exception
'//Обрабатываем ошибки
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
'//В переменной Result будет храниться все то, что вернет тебе сервер
If Result.Length > 0 Then MessageBox.Show(Result, "Result", MessageBoxButtons.OK, MessageBoxIcon.Information)
Номер ответа: 14
Автор ответа:
AlexDerS
Вопросов: 37
Ответов: 61
Профиль | | #14
Добавлено: 11.04.06 12:51
Спасибо! Спасибо всем большое!
Особая благодарнасть: vito и EROS'у
Номер ответа: 15
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #15
Добавлено: 11.04.06 12:55
Sharp, к чему такие извращения?