프로그램 실행 시 메모리 최적화 기법
。 동적 로딩 / 동적 연결
▶ 동적 로딩은 프로그램 내부 모듈을 필요할 때 메모리에 적재
▶ 동적 연결은 외부 라이브러리를 실행 시점에 연결
동적 로딩 ( Dynamic Loading )
。프로그램 실행 시 자원을 한꺼번에 메모리에 Load하지 않고, 프로그램의 런타임 도중 필요한 시점에서 필요한 모듈 / 데이터를 동적으로 메모리에 Load 및 UnLoad하는 기술
。개발자가 직접 제어
▶ 명시적 코드 작성이 필요
ex ) 게임에서 플레이어가 특정 지역에 진입할 때마다 해당 텍스처를 메모리에 Load 및 지나간 지역은 Unload
동적로딩 장점
。메모리 사용량 감소 및 시작 속도 향상
。유연한 업데이트 가능
동적로딩 단점
。Load / Unload 시점의 관리가 필요
▶ 메모리 누수 위험 존재
。코드 복잡도 증가
동적 연결( Dynamic Linking )
。프로그램 실행 도중 필요한 시점에서 필요한 외부 라이브러리를 메모리에 동적으로연결하는 기술
。OS가 자동 관리하여 연결
ex ) 브라우저에서 플러그인 사용 시 브라우저에 플러그인 설치 및 사용자는 필요한 시점에서만 해당 플러그인을 메모리에 로드하여 활용
동적연결 장점
。프로그램의 실행파일 크기 축소
▶ 정적 연결과 다르게 라이브러리를 실행파일에 포함하지않고 런타임 중 필요한 시점에서 외부 라이브러리를 연결해서 활용
。라이브러리 업데이트 시 재컴파일이 불필요
。여러 프로그램이 동일한 라이브러리를 재사용함으로써 공유하여 메모리 효율 증가
정적 연결 ( Static Linking )
。 필요한 라이브러리를 프로그램 컴파일 단계에서 로드하여 라이브러리가 프로그램에 포함
▶ 실행파일 크기가 동적 연결`에 비해 크다.