본문 바로가기

CS

(26)
제네릭이란 데이터 요소 타입을 확정하지 않고 데이터 타입 자체를 타입 파라미터로 받아들이도록 클래스 내부의 멤버 변수의 타입을 일반화시킨 클래스입니다. 제네릭은 여러 데이터 형식에서 동일한 로직을 구현할 때, 컬렉션 타입에서 다양한 데이터 형식을 저장하고 관리할 때, 데이터 형식에 따라 다른 연산을 수행해야 할 때 objec타입을 사용했을 때의 문제점을 해소할 수 있습니다. 즉 불필요한 클래스 구현을 방지하고, 타입 검사가 엄격하므로 애플리케이션 배포 전 미리 문제를 해결할 수 있고, 명시적 변환보다 속도가 빠르므로 코드의 재사용성과 유연성이 향상됩니다.
배열과 List, ArrayList, Dictionary 의 차이점 배열은 특정 타입의 연속된 메모리를 정적으로 선언하여 관리할 수 있다. List는 특정 타입의 연속된 메모리를 동적으로 관리하며, 크기가 부족할 경우 2배로 할당하고 연속되게 할당할 메모리가 없다면 새로운 메모리 공간으로 이주하여 연속된 메모리를 할당한다. ArrayList는 불특정 타입의 List이다. 불특정 타입이라 편하지만, 넣고 뺄 때 느리다. Dictionary는 특정 타입을 키과 밸류로 관리하는 방식이다. Dictionary는 어떻게 구현해야 하나요? Dictionary는 불변값인 key와 가변값인 value로 쌍을 이뤄 데이터를 저장합니다. 또한 중복키를 허용하지 않고 그 이전값에 덮어쓰기하므로 ContainsKey를 사용해 이미 존재하는 키인지 확인해야 합니다. Dictionary 검색이 ..
박싱과 언박싱이란 값 타입을 참조 타입으로 변환하는 것을 박싱이라고 하며, 참조 타입을 다시 값 타입으로 변환하는 것을 언방싱이라고 합니다. 박싱을 할 때 스택에 있는 메모리를 힙으로 이동하게 되고 아예 새로운 객체를 만들어 내야 하므로, 이 과정에서 오버헤드가 발생하여 성능이 저하됩니다. 또한 언방식을 할 때도 박싱과 같은 문제점이 있습니다.
가비지 컬렉션이란 무엇인가 가비지 컬렉션(Garbage Collection)은 프로그래밍 언어에서 메모리 관리의 측면에서 사용되는 중요한 개념으로 주로 메모리 관리를 자동화 하고 불필요한 메모리 사용을 최소화 하기 위해서 사용됩니다. 가비지 컬렉션은 주로 고급 프로그래밍 언어에서 사용되며, C++, C#, .NET, Java, Python, Ruby등의 언어에서 지원됩니다. 가비지 컬렉션은 다음과 같은 주요 목적을 가지고 있습니다. 메모리 누수 방지 : 가비지 컬렉션은 프로그램이 할당한 메모리를 추적하고, 더 이상 사용되지 않는 메모리를 식별하여 해제하는 역활을 합니다. 이로써 메모리 누수를 방지하고 프로그램이 메모리를 계속해서 점유하지 않도록 합니다. 자동 메모리 관리 : 프로그래머는 메모리 할당 및 해제를 수동으로 처리할 필요..
가비지 컬렉터를 회피하기 위한 전략 가비지 컬렉터를 회피하려면 메모리 관리를 명시적으로 제어해야 합니다. 그러나 이렇게 하면 개발자가 메모리 관리를 직접 처리해야 하므로 코드가 더 복잡해지고 오류의 가능성이 높아집니다. 그럼에도 불구하고 일부 특수한 상황에서 가비지 컬렉터를 회피하는 것이 필요할 수 있습니다. 다음은 가비지 컬렉터를 회피하기 위한 일반적인 전략과 주의사항입니다. 수동 메모리 관리: 객체를 수동으로 할당하고 해제합니다. 메모리 할당 및 해제를 위한 메서드나 함수를 사용하여 객체 수명을 관리합니다. 주의가 필요하며, 메모리 누수와 해제되지 않은 메모리를 조심스럽게 다룰 필요가 있습니다. 풀링(Pooling): 객체를 미리 할당해 두고 사용한 후에 다시 사용 가능한 상태로 돌려놓는 방식을 사용합니다. 이는 메모리 할당 및 해제 ..
가비지 컬렉터란 무엇인가 가비지 컬렉터(Garbage Collector)는 프로그래밍 언어 런타임 환경에서 메모리 관리를 지원하는 구성요소 중 하나입니다. 주로 메모리 누수를 방지하고 프로그램의 성능을 향상시키는 데 사용됩니다. 가비지 컬렉션은 프로그램이 동적으로 할당한 메모리를 관리하고 더 이상 사용되지 않는 메모리를 해제하여 다시 사용 가능한 상태로 만듭니다. 가비지 컬럭터는 다음과 같은 주요 작업을 수행합니다. 참조계산: 가비지 컬렉션은 프로그램에서 어떤 객체가 여전히 참조되고 있는지를 추적합니다. 객체가 더 이상 참조되지 않는 경우, 이 객체는 후속 작업을 위해 표시됩니다. 가비지 식별: 가비지 컬렉션은 더이상 참조되지 않는 객체를 확인합니다. 이러한 객체는 가비지로 표시됩니다. 메모리 해제: 가비지로 표시된 객체들을 메..