Модераторы: Partizan, gambit

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Задание размера выделяемой под приложение памяти. 
V
    Опции темы
Naum
Дата 4.10.2006, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 743
Регистрация: 7.9.2005
Где: Саратов, ул. Поса дского, 298

Репутация: 8
Всего: 15



 Собственно вопрос: Как задать максимальный размер выделяемой под приложение памяти?
Помню, че-то такое было, но даже приблизительно не помню че. Помогите, плиз  smile .


--------------------
У нас всего два праздника Новый год и ТЯПница.
PM MAIL ICQ   Вверх
mr.DUDA
Дата 4.10.2006, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



А разве дотнетовское приложение не кушает всю свободную память ? Вроде, для Win32-приложений то же самое.


--------------------
user posted image
PM MAIL WWW   Вверх
ivashkanet
Дата 4.10.2006, 18:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

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



mr.DUDA, вот и я того же мнения. 
В классе Сборщика мусора нет свойства отвечающего за предел памяти  smile 
Если бы было, то было бы именно там  smile 
PM MAIL WWW ICQ   Вверх
Naum
Дата 5.10.2006, 10:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 743
Регистрация: 7.9.2005
Где: Саратов, ул. Поса дского, 298

Репутация: 8
Всего: 15



Цитата(Naum @  4.10.2006,  16:01 Найти цитируемый пост)
Как задать максимальный размер выделяемой под приложение памяти?


Не, неправильный вопрос. Не максимальный, а первоначальный. Насколько я знаю, винда при старте процесса выделяет для него сколько-то памяти с резервом. Если для процесса этой памяти недостаточно, выделяется дополнительно еще сколько-то памяти с резервом. И так далее. Так вот эти моменты выделения дополнительной памяти довольно длительные  smile . Если при старте программы задать первоначльный размер памяти с очень большим резервом, то, по идее, она должна работать побыстрее. 
Так вот как задать размер первоначально выделяемой памяти?

З.Ы. Где-то это точно было.

З.З.Ы. Возможно даже и не в .NET.  smile 


--------------------
У нас всего два праздника Новый год и ТЯПница.
PM MAIL ICQ   Вверх
kobra
Дата 5.10.2006, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 730
Регистрация: 15.6.2005
Где: Грузия, Тбилиси

Репутация: 1
Всего: 9



SQL SERVER умеет такое, значит возможно. но как? вот это вопрос.
PM MAIL   Вверх
Дрон
Дата 5.10.2006, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


Профиль
Группа: Участник Клуба
Сообщений: 3179
Регистрация: 29.12.2002
Где: Санкт-Петербург

Репутация: 24
Всего: 93



Цитата(kobra @  5.10.2006,  13:44 Найти цитируемый пост)
значит возможно. но как? вот это вопрос. 

А это ответ -- VirtualAlloc
Только это из WinAPI и в .NET от него никакой пользы не будет.
Я вообще не очень понимаю, как автоматическая сборка мусора может сочетаться с ручным резервированием памяти?

Это сообщение отредактировал(а) Дрон - 5.10.2006, 13:03


--------------------
Да. Именно так.
PM   Вверх
ivashkanet
Дата 5.10.2006, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

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



Цитата(Дрон @  5.10.2006,  13:02 Найти цитируемый пост)
Я вообще не очень понимаю, как автоматическая сборка мусора может сочетаться с ручным резервированием памяти?

Это как для класса List<T> есть понятие capacity = начальная емкость. 
Изначально она вроде 4, а потом возрастает в геометрической прогрессии (знаменатель 2) по мере надобности. Так вот если ты 100% уверен, что у тебя будет 10-20-100 элементов, то можно ставить емкость в это значение (или чуть больше). Это сэкономит часть ресурсов при перевыделении памяти  smile 

Это сообщение отредактировал(а) ivashkanet - 5.10.2006, 13:18
PM MAIL WWW ICQ   Вверх
Naum
Дата 5.10.2006, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 743
Регистрация: 7.9.2005
Где: Саратов, ул. Поса дского, 298

Репутация: 8
Всего: 15



Цитата(Дрон @  5.10.2006,  14:02 Найти цитируемый пост)
автоматическая сборка мусора


Вот именно для этих целей мне и нужно ограничивать память. Потому что получается нифика она не автоматическая. Как я понял, почитав MSDN, сборщик мусора начинает собирать мусор, когда не хватает памяти для создания нового объекта. 
А в силу 
Цитата(mr.DUDA @  4.10.2006,  18:44 Найти цитируемый пост)
А разве дотнетовское приложение не кушает всю свободную память ? Вроде, для Win32-приложений то же самое.

получается, что даже очень маленькое, но долго выполняющееся приложение скушает всю память. Нехорошо.



--------------------
У нас всего два праздника Новый год и ТЯПница.
PM MAIL ICQ   Вверх
ivashkanet
Дата 5.10.2006, 13:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

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



Цитата(Naum @  5.10.2006,  13:17 Найти цитируемый пост)
Вот именно для этих целей мне и нужно ограничивать память.

Я не понял, что тебе надо? Ограничить сверху? Или задать начальную "емкость" памяти?

P.S. System.GC.Collect() тебе в руки  smile Да и вообще весь класс System.GC
PM MAIL WWW ICQ   Вверх
blast99
Дата 5.10.2006, 19:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


сисадмин
*


Профиль
Группа: Участник
Сообщений: 134
Регистрация: 3.5.2005
Где: Россия, г. Ставро поль

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



ivashkanet, насколько я понял - ему бы хотелось ограничить память для насильственного вызова сборщика мусора, чтобы он объекты подчистил. Вроде так...  smile 
--------------------
Зачастую, наши возможности ограничены лишь нашими желаниями. И ничто так не ограничивает желания, как заниженная оценка своих возможностей.
PM MAIL ICQ   Вверх
mr.DUDA
Дата 5.10.2006, 22:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Небольшое расследование показало наличие метода GC.AddMemoryPressure, но он действует только для unmanaged-памяти. Можно попробовать создать свой поток, который будет с периодичностью N.N секунд проверять размер выделенной памяти и по превышению - вызывать GC.Collect


--------------------
user posted image
PM MAIL WWW   Вверх
ivashkanet
Дата 6.10.2006, 07:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

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



Цитата(blast99 @  5.10.2006,  19:51 Найти цитируемый пост)
ivashkanet, насколько я понял


Цитата(Naum @  4.10.2006,  15:01 Найти цитируемый пост)
 Как задать максимальный размер выделяемой под приложение памяти?
 
Цитата(Naum @  5.10.2006,  10:11 Найти цитируемый пост)
Не, неправильный вопрос. Не максимальный, а первоначальный.

 smile 
PM MAIL WWW ICQ   Вверх
Naum
Дата 6.10.2006, 09:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 743
Регистрация: 7.9.2005
Где: Саратов, ул. Поса дского, 298

Репутация: 8
Всего: 15



Цитата(ivashkanet @  5.10.2006,  14:20 Найти цитируемый пост)
Я не понял, что тебе надо?


Честно говоря, и то и другое.  smile  И для разных целей. Простите за небольшое нарушение. 
С максимальной памятью уже все решено. Я просто хотел на практике убедиться, что 
Цитата(Naum @  5.10.2006,  14:17 Найти цитируемый пост)
нифика она не автоматическая

и
Цитата(Naum @  5.10.2006,  14:17 Найти цитируемый пост)
даже очень маленькое, но долго выполняющееся приложение скушает всю память

если ручками не управлять этим самым GC. 
А насчет первоначальной памяти было несколько советов. 
Цитата(ivashkanet @  5.10.2006,  14:17 Найти цитируемый пост)
Это как для класса List<T> есть понятие capacity = начальная емкость.

Поискал в MSDN. capacity - есть у многих классов. Но почему то нет у Application.
Буду пробовать. Спасибо за помощь.




--------------------
У нас всего два праздника Новый год и ТЯПница.
PM MAIL ICQ   Вверх
-ser-
Дата 6.10.2006, 09:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 5
Всего: 13



Цитата(Naum @  5.10.2006,  10:11 Найти цитируемый пост)
Так вот эти моменты выделения дополнительной памяти довольно длительные

не понимаю почему это должно быть длительным. может держит что-то другое?
вообще удивляет, почему все так активно и серьезно обсуждают эту тему.

я бы не стал этой ерундой заниматься. откуда ты знаешь, сколько тебе нужно памяти пусть и с запасом? дошли уже до ручного управления GC! если все такие умные, что ж вы сам .net раньше не написали.


--------------------
"Тонкая, однако, работа." 
PM MAIL ICQ   Вверх
Naum
Дата 6.10.2006, 10:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 743
Регистрация: 7.9.2005
Где: Саратов, ул. Поса дского, 298

Репутация: 8
Всего: 15



 smile 
Цитата(-ser- @  6.10.2006,  10:53 Найти цитируемый пост)
дошли уже до ручного управления GC! если все такие умные, что ж вы сам .net раньше не написали.

Простите, простите я ничего плохого про разработчиков .NET Framework SDK не говорил, и ничего не говорил про свои и их умственные способности. 
А про ручное управление GC это не так уж страшно, а для unmanaged-ресурсов просто необходимо показать этому GC, как их собирать.

Цитата(MSDN)
Для большинства объектов, созданных приложением, сборщик мусора автоматически выполнит необходимые задачи по управлению памятью. Однако неуправляемые ресурсы требуют явной очистки. Основным типом неуправляемых ресурсов являются объекты, образующие обертку для ресурсов операционной системы, такие как дескриптор файлов, дескриптор окна или сетевое подключение. Хотя сборщик мусора может отслеживать время жизни управляемого объекта, инкапсулирующего неуправляемые ресурсы, он не имеет определенных сведений о том, как очистить эти ресурсы. При создании объекта, инкапсулирующего неуправляемый ресурс, рекомендуется предоставлять необходимый код для очистки неуправляемого ресурса в открытом методе Dispose. Предоставление метода Dispose дает возможность пользователю объекта явно освобождать память при завершении объекта. Когда используется объект, инкапсулирующий неуправляемый ресурс, следует помнить о Dispose и при необходимости вызывать его. Дополнительные сведения об очистке неуправляемых ресурсов и пример шаблона разработки для реализации Dispose см. в разделе Программирование сборки мусора.


http://msdn.microsoft.com/library/rus/defa...ymanagement.asp




--------------------
У нас всего два праздника Новый год и ТЯПница.
PM MAIL ICQ   Вверх
ivashkanet
Дата 6.10.2006, 10:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

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



Цитата(Naum @  6.10.2006,  10:09 Найти цитируемый пост)
А про ручное управление GC это не так уж страшно, а для unmanaged-ресурсов просто необходимо показать этому GC, как их собирать.

Naum, ты не путай "ручное управление GC" с необходимостью очищать unmanaged ресуры.
Это совершенно разные вещи. 
Первое это влезание в логику работы механизма очистки, а второе это "объяснение" сборщику мусора как правильно работать с вещами, с которыми работать он изначально не умеет smile 
PM MAIL WWW ICQ   Вверх
Naum
Дата 6.10.2006, 10:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 743
Регистрация: 7.9.2005
Где: Саратов, ул. Поса дского, 298

Репутация: 8
Всего: 15



Хорошо, это я понял. Но зачем тогда класс GC, если управлять сборщиком ручками это плохо?


--------------------
У нас всего два праздника Новый год и ТЯПница.
PM MAIL ICQ   Вверх
ivashkanet
Дата 6.10.2006, 10:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

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



Цитата(Naum @  6.10.2006,  10:20 Найти цитируемый пост)
 Но зачем тогда класс GC, если управлять сборщиком ручками это плохо?

Чтобы была возможность (в исключительных случаях) произвести сборку вручную.

Например инициализация приложения требует очень больших ресурсов, но проводится она всего лишь раз в день (например). После инициализации эти ресурсы не нужны. Можно, конечно, оставить эти ресурсы до сборки мусора, но ты не хочешь, чтобы твой "трэй монитор" занимал 200М, не нужной ему сейчас, памяти. Вот ты и очищаешь ее.

Т.е. главное правило --- не злоупотребляй  smile 
PM MAIL WWW ICQ   Вверх
Naum
Дата 6.10.2006, 10:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 743
Регистрация: 7.9.2005
Где: Саратов, ул. Поса дского, 298

Репутация: 8
Всего: 15



А этот случай
Цитата(Naum @  5.10.2006,  14:17 Найти цитируемый пост)
очень маленькое, но долго выполняющееся приложение

можно считать исключительным?

Добавлено @ 10:42 
Имеется ввиду не сервис, а Windows Forms или консольное приложение.


--------------------
У нас всего два праздника Новый год и ТЯПница.
PM MAIL ICQ   Вверх
mr.DUDA
Дата 6.10.2006, 10:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Цитата(Naum @  6.10.2006,  10:41 Найти цитируемый пост)
А этот случай

Цитата(Naum @  5.10.2006,  14:17 )
очень маленькое, но долго выполняющееся приложение

можно считать исключительным?

При отсутствии утечек памяти, приложение не будет есть больше определённого предела.


--------------------
user posted image
PM MAIL WWW   Вверх
Naum
Дата 6.10.2006, 10:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 743
Регистрация: 7.9.2005
Где: Саратов, ул. Поса дского, 298

Репутация: 8
Всего: 15



Цитата(mr.DUDA @  6.10.2006,  11:47 Найти цитируемый пост)
не будет есть больше определённого предела

Вот именно это я и хотел узнать - больше определенного чем или кем предела оно не будет есть?



--------------------
У нас всего два праздника Новый год и ТЯПница.
PM MAIL ICQ   Вверх
mr.DUDA
Дата 6.10.2006, 18:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Цитата(Naum @  6.10.2006,  10:52 Найти цитируемый пост)
Вот именно это я и хотел узнать - больше определенного чем или кем предела оно не будет есть?

Зависит от того, сколько объектов создаёшь и как часто.


--------------------
user posted image
PM MAIL WWW   Вверх
Naum
Дата 7.10.2006, 10:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 743
Регистрация: 7.9.2005
Где: Саратов, ул. Поса дского, 298

Репутация: 8
Всего: 15



И еще интересно, почему не будет есть? Получаица, сборщик мусора собирает мусор не только в те моменты, когда для новых объектов уже не хватает памяти?


--------------------
У нас всего два праздника Новый год и ТЯПница.
PM MAIL ICQ   Вверх
Naum
Дата 9.10.2006, 10:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 743
Регистрация: 7.9.2005
Где: Саратов, ул. Поса дского, 298

Репутация: 8
Всего: 15



А я нашел кое-что интересное от ИвашкиНет..  smile . Размер не главное. Главное, что из написанного в этом топике ясно, что сборка мусора начинается не в то время, когда памяти уже не хватает совсем, а в то время, когда превышен какой-то барьер.
Хоть ответ и не в этом топике, все равно ИвашкиНет +1.


--------------------
У нас всего два праздника Новый год и ТЯПница.
PM MAIL ICQ   Вверх
ivashkanet
Дата 9.10.2006, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

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



Naum, так то ж не мне smile
Я просто к тому посту успел прочитать статью по ссылку Void-а. Вот и ответил.
P.S. Ссылка на статью назодится в том же топике  smile 
PM MAIL WWW ICQ   Вверх
Naum
Дата 23.10.2006, 09:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 743
Регистрация: 7.9.2005
Где: Саратов, ул. Поса дского, 298

Репутация: 8
Всего: 15



Цитата(Naum @  4.10.2006,  16:01 Найти цитируемый пост)
Собственно вопрос: Как задать максимальный размер выделяемой под приложение памяти?
Помню, че-то такое было, но даже приблизительно не помню че.


Вспомнил. ИМХО, это не то, что мне надо, но просто так, если кому инетересно.

Цитата(MSDN)

Process.MaxWorkingSet - свойство

Значение свойства
Максимальный размер рабочего множества, доступного в памяти для процесса.

Примечания
Рабочее множество программы — это коллекция тех страниц в виртуальном адресном пространстве программы, на которые осуществлялась ссылка.

Рабочее множество включает общие и закрытые данные. Общие данные включают страницы, которые содержат все инструкции в выполняемом приложении, включая страницы в системных и пользовательских dll-файлах. При увеличении рабочего множества увеличиваются и запросы памяти.

Процесс имеет минимальный и максимальный размеры рабочего множества. Каждый раз при создании ресурса процесса система резервирует количество памяти, равное минимальному размеру рабочего множества для процесса. Диспетчер виртуальной памяти пытается сохранить по крайней мере это количество резидентной памяти, когда процесс активен, но никогда не хранит больше максимального размера.

Система задает размеры рабочего множества по умолчанию. Нельзя изменять эти размеры, используя члены MaxWorkingSet и MinWorkingSet. Однако задание этих значений не гарантирует, что память будет зарезервированной или находящейся в оперативной памяти.

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



--------------------
У нас всего два праздника Новый год и ТЯПница.
PM MAIL ICQ   Вверх
Gazon
Дата 28.10.2006, 22:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

Репутация: 3
Всего: 8



Naum,
Для управления рабочем множеством используется API функция SetProcessWorkingSetSize(находится в библиотеке kernel32), которая принимает хэндл процесса, минимальный и максимальный рамер рабочего множества.
Если же в качестве минимального и максимального размера передать -1, то рабочее множетсво минимизиируется до фактического размера выделенной памяти.
Не думаю, что стоит вызывать эту функцию для увеличения рабочего множества т.к. среда это делает сама с большой охотой и в основном к этой функции прибегают для уменьшения рабочего множетсва.

Думаю, что увеличение размера рабочего множетсва не отнимает очень много ресурсов, иначе рабочее множетсво не минимизировалось бы каждый раз средой, когда сворачиваешь форму(сверните форму и в диспетчере задач увидете как минимизируется память).

--------------------
Чем больше узнаешь, тем больше не знаешь, но до истины всегда можно добраться.
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

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


 




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


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

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