2013-06-24 2 views
-2

가비지 수집기가있는 경우에도 런타임에 메모리 부족 예외가 발생할 수 있습니까?메모리 부족 런타임의 예외

나는 그것에 대해 질문을 받았지만 확실하지 않았습니다.

+4

가능합니다. GC는 모든 데이터를 메모리에 저장하는 것을 돕는 것이 아니라 메모리 (할당)를 신경 쓰지 않는 것입니다. – zerkms

+0

http://stackoverflow.com/questions/597499/whyam-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

가비지 수집기는 응용 프로그램 루트가 더 이상 참조하지 않는 "가비지"개체 만 선언합니다. 관리되는 힙이 가득 차고 그 안에있는 모든 객체가 여전히 응용 프로그램 루트에 의해 참조되는 경우 (응용 프로그램이 객체에 계속 도달 할 수 있음을 의미) OutOfMemoryException이 표시됩니다.

GC가 작동하는 방법을 알고 싶다면 this을 읽어보십시오. Finalize 메서드에 관한 부분도 꽤 흥미 롭습니다.