728x90
C#에서 코드를 작성하면 Static키워드가 도대체 뭘까? 하는 생각이 든다.
첫 줄부터 써있기 때문이다.
Static void Main(string[] args)
바로 Main함수에도 써있다.
따라서 사용새가 많아 보이는 Static이 무엇인지 가볍게 알아보자
일단 우리가 프로그램을 실행하기까지 과정이 있다.
1. Editor Time
- 내가 코드를 작성하는 시점
2. Compile Time
- 프로그램을 컴파일 하는 시점 ( build - link - compile 과정이 이루어진다.)
3. Run Time
- 프로그램이 메모리에 올라가서 실행되는 동안을 얘기한다.
따라서 동작순서는 1 -> 2 -> 3 이다.
이때 Static키워드가 붙어있는 클래스, 메소드는
컴파일 타임과 런타임 사이에 메모리에 몽땅 올려놓겠다는 뜻이다.
즉, Static 키워드를 많이 남발하게 되면
쓸데 없는 메모리 낭비가 많이 생길 수 있다.
그 이유는 내가 Static에 변수를 많이 선언을 하게되면
그 변수들은 메모리에 항상 올라가 있게 된다.
동적할당된 함수의 경우에는 가비지 컬렉터가 쓰레기라도 수거해가지만
이 녀석들은 그냥 항상 메모리를 차지하고있는것이다.
그래서 Static을 이용할때는 조금 더 생각을 하며 이용을 하는것이 좋다.
728x90
'프로그래밍 > C#' 카테고리의 다른 글
C# 컬렉션(Collection_List, Dictionary, Stack, Queue, ArrayList) (0) | 2023.06.15 |
---|---|
C#에서 배열(Array), 이차원배열, 다차원배열, 가변배열 선언 (0) | 2023.06.15 |
[C#] 클래스(Class) 두번째 시간 (0) | 2023.06.13 |
[C#] 클래스(Class) 첫번째 시간 (0) | 2023.06.13 |
Function, Library, API, Frame work, 컬렉션(C#), 컨테이너(C++) (0) | 2023.06.13 |