![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| Naum |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 743 Регистрация: 7.9.2005 Где: Саратов, ул. Поса дского, 298 Репутация: 8 Всего: 15 |
Собственно вопрос: Как задать максимальный размер выделяемой под приложение памяти?
Помню, че-то такое было, но даже приблизительно не помню че. Помогите, плиз -------------------- У нас всего два праздника Новый год и ТЯПница. |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
А разве дотнетовское приложение не кушает всю свободную память ? Вроде, для Win32-приложений то же самое.
-------------------- ![]() |
|||
|
||||
| ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 47 Всего: 149 |
mr.DUDA, вот и я того же мнения.
В классе Сборщика мусора нет свойства отвечающего за предел памяти Если бы было, то было бы именно там |
|||
|
||||
| Naum |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 743 Регистрация: 7.9.2005 Где: Саратов, ул. Поса дского, 298 Репутация: 8 Всего: 15 |
Не, неправильный вопрос. Не максимальный, а первоначальный. Насколько я знаю, винда при старте процесса выделяет для него сколько-то памяти с резервом. Если для процесса этой памяти недостаточно, выделяется дополнительно еще сколько-то памяти с резервом. И так далее. Так вот эти моменты выделения дополнительной памяти довольно длительные Так вот как задать размер первоначально выделяемой памяти? З.Ы. Где-то это точно было. З.З.Ы. Возможно даже и не в .NET. -------------------- У нас всего два праздника Новый год и ТЯПница. |
|||
|
||||
| kobra |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 730 Регистрация: 15.6.2005 Где: Грузия, Тбилиси Репутация: 1 Всего: 9 |
SQL SERVER умеет такое, значит возможно. но как? вот это вопрос.
|
|||
|
||||
| Дрон |
|
|||
![]() Java-ненавистник :) ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3179 Регистрация: 29.12.2002 Где: Санкт-Петербург Репутация: 24 Всего: 93 |
А это ответ -- VirtualAlloc Только это из WinAPI и в .NET от него никакой пользы не будет. Я вообще не очень понимаю, как автоматическая сборка мусора может сочетаться с ручным резервированием памяти? Это сообщение отредактировал(а) Дрон - 5.10.2006, 13:03 -------------------- Да. Именно так. |
|||
|
||||
| ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 47 Всего: 149 |
Это как для класса List<T> есть понятие capacity = начальная емкость. Изначально она вроде 4, а потом возрастает в геометрической прогрессии (знаменатель 2) по мере надобности. Так вот если ты 100% уверен, что у тебя будет 10-20-100 элементов, то можно ставить емкость в это значение (или чуть больше). Это сэкономит часть ресурсов при перевыделении памяти Это сообщение отредактировал(а) ivashkanet - 5.10.2006, 13:18 |
|||
|
||||
| Naum |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 743 Регистрация: 7.9.2005 Где: Саратов, ул. Поса дского, 298 Репутация: 8 Всего: 15 |
Вот именно для этих целей мне и нужно ограничивать память. Потому что получается нифика она не автоматическая. Как я понял, почитав MSDN, сборщик мусора начинает собирать мусор, когда не хватает памяти для создания нового объекта. А в силу
получается, что даже очень маленькое, но долго выполняющееся приложение скушает всю память. Нехорошо. -------------------- У нас всего два праздника Новый год и ТЯПница. |
|||
|
||||
| ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 47 Всего: 149 |
Я не понял, что тебе надо? Ограничить сверху? Или задать начальную "емкость" памяти? P.S. System.GC.Collect() тебе в руки |
|||
|
||||
| blast99 |
|
|||
![]() сисадмин ![]() Профиль Группа: Участник Сообщений: 134 Регистрация: 3.5.2005 Где: Россия, г. Ставро поль Репутация: нет Всего: 3 |
ivashkanet, насколько я понял - ему бы хотелось ограничить память для насильственного вызова сборщика мусора, чтобы он объекты подчистил. Вроде так...
--------------------
Зачастую, наши возможности ограничены лишь нашими желаниями. И ничто так не ограничивает желания, как заниженная оценка своих возможностей. |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Небольшое расследование показало наличие метода GC.AddMemoryPressure, но он действует только для unmanaged-памяти. Можно попробовать создать свой поток, который будет с периодичностью N.N секунд проверять размер выделенной памяти и по превышению - вызывать GC.Collect
-------------------- ![]() |
|||
|
||||
| ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 47 Всего: 149 |
|
|||
|
||||
| Naum |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 743 Регистрация: 7.9.2005 Где: Саратов, ул. Поса дского, 298 Репутация: 8 Всего: 15 |
Честно говоря, и то и другое. С максимальной памятью уже все решено. Я просто хотел на практике убедиться, что и
если ручками не управлять этим самым GC. А насчет первоначальной памяти было несколько советов.
Поискал в MSDN. capacity - есть у многих классов. Но почему то нет у Application. Буду пробовать. Спасибо за помощь. -------------------- У нас всего два праздника Новый год и ТЯПница. |
||||
|
|||||
| -ser- |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 1.2.2005 Репутация: 5 Всего: 13 |
не понимаю почему это должно быть длительным. может держит что-то другое? вообще удивляет, почему все так активно и серьезно обсуждают эту тему. я бы не стал этой ерундой заниматься. откуда ты знаешь, сколько тебе нужно памяти пусть и с запасом? дошли уже до ручного управления GC! если все такие умные, что ж вы сам .net раньше не написали. -------------------- "Тонкая, однако, работа." |
|||
|
||||
| Naum |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 743 Регистрация: 7.9.2005 Где: Саратов, ул. Поса дского, 298 Репутация: 8 Всего: 15 |
Простите, простите я ничего плохого про разработчиков .NET Framework SDK не говорил, и ничего не говорил про свои и их умственные способности. А про ручное управление GC это не так уж страшно, а для unmanaged-ресурсов просто необходимо показать этому GC, как их собирать.
http://msdn.microsoft.com/library/rus/defa...ymanagement.asp -------------------- У нас всего два праздника Новый год и ТЯПница. |
||||
|
|||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |