![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| agealex |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 207 Регистрация: 2.9.2007 Репутация: нет Всего: нет |
Есть массив переменной длины в зависимости от содержимого вызываемой функции, по этому приходится создавать его постоянно с параметром new, как его удалить ? в С++ был delete [] ... ; а есть ли аналог в шарпе?
|
|||
|
||||
| ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 3 Всего: 149 |
agealex,
1) это не твои вопросы. Все сделает сборщик мусора (если все же считаешь их своими, то можно вызвать его принудительно: GC.Collect(); (вроде так)) 2) Возможно тебе подойдет саморастущая коллекция (почти массив): List<T> |
|||
|
||||
| agealex |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 207 Регистрация: 2.9.2007 Репутация: нет Всего: нет |
Запустить нужно один раз или тоже в цикле?
|
|||
|
||||
| ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 3 Всего: 149 |
agealex, в момент вызова GC.Collect(); сборщик мусора приступает к работе. Так что тебе нужно в цикле. Но ты учти, что будут собраны все "неживые" объекты, а не только твой массив. Так что первый запуск может "подтормаживать".
А вообще не заморачивайся. Я "кидаю" мегабайтные объекты и ничего. А ты на килобайтные смотришь... P.S. Если распишешь задачу подробнее может найдём другое решение... |
|||
|
||||
| zaver |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 204 Регистрация: 15.8.2005 Репутация: 1 Всего: 3 |
да кстати GC заметно хавает ресурсы во время работы. ИМХО тебе не стоит его вызывать, он сам все делает за тебя, если утечки памяти и бывают то уж не его вине. я уже давно не забочусь о памяти, т.к. запустив диспетчера задач, сразу вижу что GC не дает памяти подыматься более чем на ~30% от первоночальной. редко бывают случаи когда есть утечки памяти, но это уже не по его вине.
|
|||
|
||||
| agealex |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 207 Регистрация: 2.9.2007 Репутация: нет Всего: нет |
Ну в моем случае количество памяти очень важно, прога на кпк должна работать а там места мало, програмка усиленно засерает память, пытаюсь найти в каком месте , вот думаю может в этом
|
|||
|
||||
| zaver |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 204 Регистрация: 15.8.2005 Репутация: 1 Всего: 3 |
зачастую память засирается (т.е. так что GC никак не помогает) в том случае, если ты посотянно создаешь новые объекты, так что ссылки на старые не теряются, например сохраняются в списке или массиве и причом это может быть неявно. например, в XNA часто встречал такое, что создаются объекты каждый раз при прорисовке, я думал, что они удаляются (у меня в коде нигде не было "живих" указателей), а на самом деле какой-то библиотечный объект их просто "складировал" в свой список и молчал
|
|||
|
||||
| ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 3 Всего: 149 |
Да, тут это важнее... Может профайлер? Вот тут их куча: http://sharptoolbox.com/categories/profilers-debuggers Но большинство платные. Лично я пользовался ANTS (триал на 14 дней) -- очень понравился. |
|||
|
||||
| agealex |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 207 Регистрация: 2.9.2007 Репутация: нет Всего: нет |
Все. Спасибо нашел, оказывается зря на шрап грешил, нашел ошибку в коде.
|
|||
|
||||
| VisualProgrammerNET |
|
|||
![]() Почётный халявщик ![]() ![]() Профиль Группа: Участник Сообщений: 461 Регистрация: 30.10.2005 Где: Зеленоград Репутация: 1 Всего: 6 |
Что мешало объявить массив нулевым до цикла и потом использовать его одного всегда?
-------------------- 3 ГОДА НА |
|||
|
||||
| ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 3 Всего: 149 |
VisualProgrammerNET, а смысл?
Оптимизатор компиляции все равно вынесет объявление переменной за пределы цикла. (А даже если не вынесет, то этот вызов ничего не стоит для системы). Не стоит путать "указатель" на массив и сам массив, физически расположенный в памяти (кот всегда разный). |
|||
|
||||
| lankin |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 377 Регистрация: 13.12.2006 Репутация: нет Всего: нет |
И вот как от этого избавиться???? И, спрашивается, нафига это складирование придумано? |
|||
|
||||
| 1stain |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 486 Регистрация: 30.7.2007 Где: Киев - Харьков Репутация: 3 Всего: 40 |
а что тебе мешает создавать массив байт в стеке - и быстродействие будет повыше и сборщег мусора ни причем...
-------------------- Все знают, что это невозможно. Но вот приходит невежда, которому это неизвестно - он-то и делает открытие. (Albert Einstein) ![]() |
|||
|
||||
| lankin |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 377 Регистрация: 13.12.2006 Репутация: нет Всего: нет |
А можно подробнее об этом? |
||||
|
|||||
| 1stain |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 486 Регистрация: 30.7.2007 Где: Киев - Харьков Репутация: 3 Всего: 40 |
поподробней - купи книгу и прочитай. ЭТА книга своих денег стоит на 200%
-------------------- Все знают, что это невозможно. Но вот приходит невежда, которому это неизвестно - он-то и делает открытие. (Albert Einstein) ![]() |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | .NET для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |