struct와 class
두 가지 다른 데이터 타입 정의 방식
값 형식 vs 참조 형식
struct: 값 형식(Value Type)으로 분류.
이는 struct 인스턴스를 다른 변수에 할당할 때 해당 값을 복사.
두 변수가 독립적인 값을 가지게 됨.
class: 참조 형식(Reference Type)으로 분류.
class 인스턴스를 다른 변수에 할당하면 참조가 복사되므로 두 변수는 동일한 인스턴스를 가리킴.
메모리 관리
struct: 값 형식이므로 스택(stack)에 할당.
메모리 관리가 상대적으로 간단하며 범위를 벗어날 때 자동으로 해제.
class: 참조 형식이므로 힙(heap)에 할당.
메모리 관리가 더 복잡하며 개발자가 직접 메모리를 관리해야 함.
상속
struct는 상속을 지원하지 않음.
class는 상속을 지원하며 클래스 간의 계층 구조를 만들 수 있음.
가비지 컬렉터
컴퓨터 프로그램에서 동적으로 할당된 메모리를 관리하는 데 사용되는 중요한 컴퓨터 프로그램 구성 요소.
더 이상 사용되지 않는 메모리를 식별하고 회수하여, 메모리 누수(memory leaks)와 프로그램 충돌을 방지하는 기능.
기능
참조되지 않는 객체 식별:
가비지 컬렉터는 더 이상 사용되지 않는 객체 또는 메모리 블록을 식별.
더 이상 접근할 수 없는 객체로 간주됨.
메모리 회수:
가비지 컬렉터는 식별된 불필요한 객체의 메모리를 해제.
이 과정은 동적으로 할당된 메모리를 확보하고 다시 사용 가능한 메모리 풀에 반환.
자동화:
가비지 컬렉터는 메모리 관리를 자동으로 수행하므로 개발자가 메모리 해제와 관련된 작업을 수동으로 처리할 필요가 없어짐.
메모리 누수와 관련된 버그를 줄이고 프로그램 개발 생산성을 향상시킬 수 있음.