2010-03-24 8 views
1

일상 업무에서 가비지 컬렉션에서 어떤 작업을하고 있는지 자세히 설명해 주시겠습니까?작업 환경의 쓰레기 수거?

SDLC에서 얼마나 가비지 수집을 고려합니까?

+1

질문에 대해 자세히 설명해야한다고 생각합니다. (나는 꽤 느리다.) – ChaosPandion

+0

단지 알고 싶은 것, 당신은 일하는 삶에서 일상적인 쓰레기 수거에 대해 무엇을하고 있니? – SmartestVEGA

+2

고객에게 직접 전달되는 대신 명세서를 명확히하기 위해 BA에 갈 때마다 : 나는 이것을 가비지 수집으로 생각합니다. –

답변

4

가비지 수집의 장점은 이 너무 많거나 전혀 걱정하지 않는다는 것입니다. 낮은 수준의 구현은 (미리 또는 즉석에서) 더 쉽게 계획 할 수 있으며, 메모리를 확보 할 필요가 없으므로 복잡한 문제를 걱정할 시간이 많습니다.

가비지 수집을 활용할 때 유의해야 할 몇 가지 사항이 있지만 일반적으로 쉽거나 직관적입니다. 몇 예 :

  • 당신은 순환 참조가 (물론 관리 관련된 모든 자원만큼) 더 어떤 정말 문제 아니라는 사실을 활용하기 위해 당신의 생각을 변경해야 할 수도 있습니다. 이것은 익숙해지기 매우 쉽고 재미 있습니다!

  • 가능한 가장 낮은 범위에서 변수를 정의하면 도움이됩니다. 하지만 어쨌든 을하고 싶습니다..

그래서, 당신이 관리되는 메모리가없는 곳에서 .NET으로 이동하는 경우, 예, GC에 대해 조금 읽을 수 있지만 자신이 그것에 대해 점의 생각하지 찾을 경우,하지 걱정.

편집 : 관리되지 않는 리소스를 .NET에서 계속 사용할 수 있습니다. 많은 공통 .NET 네임 스페이스에서도 관리되지 않는 리소스가 아래에 사용됩니다. .Dispose() (해당하는 Using 키워드)은 관리되지 않는 메모리를 사용하고 있다는 단서로 이해해야합니다. (see me blab about that here.)

+0

Unmanged code는 어떨까요? – SmartestVEGA

+4

@SmartestVEGA : C# + VB.NET 태그를 사용하여 지정했습니다. –

+0

.net 개발자 인터뷰에서 가비지 수집에 대해 너무 많이 강조하고 있습니다. – SmartestVEGA

1

일상 업무에서 쓰레기 수거에 관한 주요 관심사는 우리가 좋은 수위 관리 서비스를 제공하고 있다는 것입니다. ;)

정말 대다수의 LOB 응용 프로그램에서는 가비지 수집에 대해 걱정할 필요가 없을 것입니다. 성능 문제가 있고 성능 관련 문제 또는 메모리 누수가 발생했음을 프로파일 링에 표시하는 경우 다음은 GC perf에서 보는입니다. 일반적인 LOB 앱에서는 드문 경우입니다.

+0

.net 개발자 인터뷰에서 본 내용은 가비지 수집에 대해 너무 많은 것을 강조하고 있습니다. ..! – SmartestVEGA

+0

@SmartestVEGA : 정말 직업에 달려 있습니다. 나는 하루 종일 일하는 동안 GC에 대해 잘 알고 있지만, 나는 과학적 소프트웨어로 일한다. 문제는 매우 중요합니다. 기업 LOB의 경우 거의 문제되지 않습니다. .NET은 이것에 아주 좋습니다 - 일반적으로 메모리 문제를 완전히 무시할 수 있으며 정상적으로 작동합니다. –

+0

@SmartestVEGA 여기서 인터뷰를 많이 보았을 때, 그들이 스트레스를받는 이유를 이해하는 데 도움이 될 수 있습니다. 위의 모든 것들과 마찬가지로, GC에 대한 가장 좋은 점은 당신이 그것에 대해 많이 걱정할 필요가 없다는 것입니다. 그러나 새로운 클래스를 디자인 할 때 어떤 객체/리소스가 처분/마무리 함수에서 처리해야 할 수도 있음을 명심하십시오 – spacemonkeys

2

대부분의 경우 GC에 대해 신경 쓰지 않아도됩니다. 걱정할 필요가 있다면 아마 기본 코딩 문제 (실수로 정적 이벤트 등을 통해 객체 참조 유출)가 발생했음을 의미합니다.

문제가있을 때 것으로 처리하고 메모리 프로파일 러를 사용하여 문제를 찾아 수정하십시오.

0

GC에 대해 알아야 할 주요 사항은 만병 통치약이 아니라는 것입니다. 메모리에 해당하며 메모리는과 비슷합니다. 리소스는 제한적이지만 꽤 많이 공급되며 이에 상응하는 리소스 인스턴스는 서로 바꿔서 사용할 수 있습니다. 예를 들어 두 개의 1MB 메모리 버퍼가 모두 필요한만큼 좋습니다. 그들과 함께.

임시 파일은 메모리와 비슷하며 파일 핸들은 메모리와 비슷하지만 파일 핸들은 특정 핸들 값이 무엇인지 상관하지 않지만 파일 자체는 파일이며 파일 잠금 그렇지 않은가? 그들은 그들이 연관되어있는 고유 한 의미있는 이름을 가지고있다. 따라서 당신은 당신이 그 (것)들을 청소할 때 정확하게주의 깊게 가지고 간다. 일반적으로 임의의 시간에 GC가 파일 잠금을 닫거나 특정 파일을 삭제하도록 할 수 없습니다. 그러나 임시 파일을 사용하여이를 수행 할 수 있습니다.

관련 문제