프로그래밍/C#

Static 키워드가 동작하는 시점(compile Time,Run Time)

gameObject 2023. 6. 15. 01:08
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