2013-06-24 4 views
-2

Возможно ли возникнуть исключение из памяти во время выполнения даже с сборщиком мусора?Исключение из памяти Исключение во время выполнения

Меня спрашивали об этом, но я не был уверен в этом.

+4

Это возможно. GC не поможет вам подгонять все ваши данные в память, но чтобы вы не заботились о распределении памяти (de) – zerkms

+0

http://stackoverflow.com/questions/597499/why-am-i-getting-an-out -of-memory-exception-in-my-c-sharp-application – OldProgrammer

+4

Если бы такое исключение не было, тогда почему бы исключение было в первую очередь? –

ответ

4

Да, если вы используете слишком много памяти, это исключение возникает.

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

... этот ответ был настолько очевиден, возможно, вы задали нечто иное, чем то, что вы имели в виду? Если да, пожалуйста, уточните.

1

Да, это случилось со мной раньше.

Это довольно очевидно: если вы используете слишком много памяти, то это исключение запускается.

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

+0

Эй, ребята, это правильный ответ на заданный вопрос: +1 – zerkms

+0

@zerkms, в то время как ответ является логическим, я думаю, что объяснение должно идти вместе с ним. Просто говорю: «Да, это так» не является ответом. – gunr2171

+0

@ gunr2171:. По крайней мере, он научит OP задавать лучшие вопросы. Это не ошибка ответчика. – zerkms

0

The Garbage Collector только объявляет объекты «мусора», на которые корень приложения больше не ссылается. Если управляемая куча заполнена, и каждый объект в ней по-прежнему ссылается на Корень приложения (что означает, что объект по-прежнему доступен приложению), вы получите OutOfMemoryException.

Я настоятельно рекомендую вам прочитать this, чтобы узнать, как работает GC. Часть о методе Finalize также довольно интересна.