Кто сказал что в .net утечек памяти не бывает?
От: ShulapovMax Россия http://HrExpress.ru/
Дата: 12.02.04 11:31
Оценка:
Настоящий программист может написать утечку памяти на любом языке

12.02.04 22:41: Перенесено модератором из '.NET' — TK
Одинаковые ошибки необязательно делать каждый раз, достаточно сделать одну, а затем обращаться к ней по мере необходимости из любого места программы.
Re: Кто сказал что в .net утечек памяти не бывает?
От: Воронков Василий Россия  
Дата: 12.02.04 11:40
Оценка:
"ShulapovMax" <16674@news.rsdn.ru> wrote in message news:536550@news.rsdn.ru...
> Настоящий программист может написать утечку памяти на любом языке

А правда, кто сказал, что в .NET не бывает утечек памяти?
Posted via RSDN NNTP Server 1.8 beta
Re: Кто сказал что в .net утечек памяти не бывает?
От: fddima  
Дата: 12.02.04 12:02
Оценка:
Здравствуйте, ShulapovMax, Вы писали:

SM>Настоящий программист может написать утечку памяти на любом языке

Если язык не предусматривает динамического управления памятью -- то не бывает даже у программиста-подделки.
... << RSDN@Home 1.1.0 stable >>
Re[2]: Кто сказал что в .net утечек памяти не бывает?
От: ShulapovMax Россия http://HrExpress.ru/
Дата: 12.02.04 12:35
Оценка:
Здравствуйте, fddima, Вы писали:
F> Если язык не предусматривает динамического управления памятью -- то не бывает даже у программиста-подделки.

а что такое неформально утечка памяти? это выделение её (создание объекта) и НЕвозвращение её (удаление объекта) системе (фреймворку).

у меня такое иногда случается, было например, GDI объекты утекали, а вот сейчас с памятью. дело в том, что фреймворк не удаляет объект, пока на него есть ссылки. вот где-то ссылки я коллекционирую
Одинаковые ошибки необязательно делать каждый раз, достаточно сделать одну, а затем обращаться к ней по мере необходимости из любого места программы.
Re[3]: Кто сказал что в .net утечек памяти не бывает?
От: Воронков Василий Россия  
Дата: 12.02.04 12:37
Оценка: :)))
> у меня такое иногда случается, было например, GDI объекты утекали, а вот сейчас с памятью. дело в том, что фреймворк не удаляет объект, пока на него есть ссылки. вот где-то ссылки я коллекционирую

static ArrayList gargbage;

Здесь?

(с) TK
Posted via RSDN NNTP Server 1.8 beta
Re[4]: Кто сказал что в .net утечек памяти не бывает?
От: ShulapovMax Россия http://HrExpress.ru/
Дата: 12.02.04 12:39
Оценка:
Здравствуйте, Воронков Василий, Вы писали:

>> у меня такое иногда случается, было например, GDI объекты утекали, а вот сейчас с памятью. дело в том, что фреймворк не удаляет объект, пока на него есть ссылки. вот где-то ссылки я коллекционирую


ВВ>static ArrayList gargbage;


ВВ>Здесь?


ВВ>(с) TK


Секундочку, щас проверю!
Одинаковые ошибки необязательно делать каждый раз, достаточно сделать одну, а затем обращаться к ней по мере необходимости из любого места программы.
Re[3]: Кто сказал что в .net утечек памяти не бывает?
От: fddima  
Дата: 12.02.04 12:41
Оценка:
Здравствуйте, ShulapovMax, Вы писали:

SM>у меня такое иногда случается, было например, GDI объекты утекали, а вот сейчас с памятью. дело в том, что фреймворк не удаляет объект, пока на него есть ссылки. вот где-то ссылки я коллекционирую

Трудно сказать... я вроде пока не коллекционирую... а там будет видно
... << RSDN@Home 1.1.0 stable >>
Re[5]: Кто сказал что в .net утечек памяти не бывает?
От: Mishka Норвегия  
Дата: 12.02.04 12:54
Оценка:
Здравствуйте, ShulapovMax, Вы писали:

ВВ>>static ArrayList gargbage;


ВВ>>Здесь?


SM>Секундочку, щас проверю!



Моё любимое место — это Session в ASP.NET. Запихиваешь туда всё подряд, а потом забываешь чистить.
Re[3]: Кто сказал что в .net утечек памяти не бывает?
От: Igor Trofimov  
Дата: 12.02.04 13:05
Оценка:
Возьми утиль под названием .NET Memory Profiler, посмотри каких объектов у тебя больше всего и посмотри, где они рождаются.
Re[6]: Кто сказал что в .net утечек памяти не бывает?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 13.02.04 20:39
Оценка:
Здравствуйте, Mishka, Вы писали:

M>Моё любимое место — это Session в ASP.NET. Запихиваешь туда всё подряд, а потом забываешь чистить.


Ну это не совсем утечка. Сессия рано или поздно умрет, при этом помрет и твой мусор. Вот если ты напихаешь в Application тогда да, будет течь пока не превысит working set.
... << RSDN@Home 1.1.3 beta 1 (Win32NT 5.1.2600.0) >>
AVK Blog
Re[7]: Кто сказал что в .net утечек памяти не бывает?
От: oRover Украина  
Дата: 15.02.04 21:49
Оценка: :)
Здравствуйте, AndrewVK, Вы писали:

AVK>Ну это не совсем утечка. Сессия рано или поздно умрет, при этом помрет и твой мусор. Вот если ты напихаешь в Application тогда да, будет течь пока не превысит working set.


или пока апликейшн не грохнется
... << RSDN@Home 1.1.2 stable >>
Re[2]: Кто сказал что в .net утечек памяти не бывает?
От: mihailik Украина  
Дата: 19.02.04 16:53
Оценка:
F> Если язык не предусматривает динамического управления памятью -- то не бывает даже у программиста-подделки.

Пример, пожайлуйста.
... << RSDN@Home 1.1.3 beta 1 >>
Re: Кто сказал что в .net утечек памяти не бывает?
От: Дарней Россия  
Дата: 20.02.04 07:11
Оценка: 6 (1)
Здравствуйте, ShulapovMax, Вы писали:

SM>Настоящий программист может написать утечку памяти на любом языке


достаточно вставить бесконечный цикл в какой-нить финалайзер. С того момента, как он будет вызван — память начнет утекать до самой смерти процесса. Ловкость рук, и никакого мошенства
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[2]: Кто сказал что в .net утечек памяти не бывает?
От: SiAVoL Россия  
Дата: 20.02.04 07:35
Оценка:
Здравствуйте, Дарней, Вы писали:

Д>достаточно вставить бесконечный цикл в какой-нить финалайзер. С того момента, как он будет вызван — память начнет утекать до самой смерти процесса. Ловкость рук, и никакого мошенства

Если финалайзер не завершается в течении определенного времени, объект грохается по-черному
... << RSDN@Home 1.1.3 beta 1 >>
Re[3]: Кто сказал что в .net утечек памяти не бывает?
От: Дарней Россия  
Дата: 20.02.04 08:45
Оценка:
Здравствуйте, SiAVoL, Вы писали:

SAV>Здравствуйте, Дарней, Вы писали:


SAV>Если финалайзер не завершается в течении определенного времени, объект грохается по-черному


источник информации — в студию!
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[4]: Кто сказал что в .net утечек памяти не бывает?
От: SiAVoL Россия  
Дата: 20.02.04 09:20
Оценка:
Здравствуйте, Дарней, Вы писали:
SAV>>Если финалайзер не завершается в течении определенного времени, объект грохается по-черному
Д>источник информации — в студию!
Признаю свою ошибку, никто его не грохнет... Но все последующие объекты будут финализироваться.
И как говорится код в студию
    class Class1
    {
        [STAThread]
        static void Main(string[] args)
        {
            BadFinalize obj1 = new BadFinalize();
            GoodFinalize obj2 = new GoodFinalize();
            obj1 = null;
            obj2 = null;
            Clear();

            obj2 = new GoodFinalize();

            Clear();

            Console.Read();
        }

        static void Clear()
        {
            GC.Collect();
            Console.WriteLine("Garbage clear!");
        }
    }

    public class BadFinalize
    {
        public BadFinalize()
        {
            Console.WriteLine("BadFinalize created");
        }

        ~BadFinalize()
        {
            for(;;)
            {
                Console.WriteLine("Finalizing....");
                System.Threading.Thread.Sleep(2000);
            }
        }
    }

    public class GoodFinalize
    {
        public GoodFinalize()         
        {
            Console.WriteLine("GoodFinalize created");
        }

        ~GoodFinalize()
        {
            Console.WriteLine("DEAD!");
        }
    }

Вот что выйдет на консоль
BadFinalize created
GoodFinalize created
Garbage clear!
DEAD!
Finalizing....
GoodFinalize created
Garbage clear!
Finalizing....
Finalizing....

Ну и "Finalizing...." будет появляться еще ОЧЕНЬ долго, пока ентер не нажмешь
Т.о. мы видим, что создается второй поток завершения.
... << RSDN@Home 1.1.3 beta 1 >>
Re[5]: Кто сказал что в .net утечек памяти не бывает?
От: Дарней Россия  
Дата: 20.02.04 11:38
Оценка:
Здравствуйте, SiAVoL, Вы писали:

SAV>[/c#]

SAV>Вот что выйдет на консоль
SAV>
SAV>BadFinalize created
SAV>GoodFinalize created
SAV>Garbage clear!
SAV>DEAD!
SAV>Finalizing....
SAV>GoodFinalize created
SAV>Garbage clear!
SAV>Finalizing....
SAV>Finalizing....
SAV>

SAV>Ну и "Finalizing...." будет появляться еще ОЧЕНЬ долго, пока ентер не нажмешь
SAV>Т.о. мы видим, что создается второй поток завершения.

обрати внимание — у тебя создается два объекта GoodFinalize, но "DEAD!" выдается только один раз. Значит — один "хороший" финалайзер был вызван перед "плохим" и выдал свое сообщение. А второй должен идти после, но до него очередь никогда не дойдет. Поскольку GC не будет освобождать его память до вызова финалайзера — объект так и будет "висеть" в памяти до второго пришествия
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[5]: Кто сказал что в .net утечек памяти не бывает?
От: Дарней Россия  
Дата: 20.02.04 11:39
Оценка:
Здравствуйте, SiAVoL, Вы писали:

так что, нашему человеку и GC не помеха
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[6]: Кто сказал что в .net утечек памяти не бывает?
От: SiAVoL Россия  
Дата: 20.02.04 12:02
Оценка:
Здравствуйте, Дарней, Вы писали:

Д>обрати внимание — у тебя создается два объекта GoodFinalize, но "DEAD!" выдается только один раз.

Мдя... че-то я сглючнул. Где-то я там увидел, что второй раз GoodFinalize снова умирает. Сам же поставил тест и сам же в нем запарил
... << RSDN@Home 1.1.3 beta 1 >>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.