동적 적재(dynamic loading) 또는 동적 링크(dynamic linking)은 컴퓨터 프로그램이 메모리로 라이브러리 또는 다른 프로그램을 적재/링크하는 방식으로, CPU의 메모리 사용량을 줄이기 위해 일부 라이브러리 코드의 적재/링크를 미뤄둔다. 미뤄진 라이브러리 코드는 생성된 실행 파일에 포함되지 않으며, 동적 링크 라이브러리(.dll)에 저장된다. 또한 이는 프로그램 실행 도중 필요시, CPU의 호출에 의해 링크, 적재된다.
이름 | 표준 POSIX/UNIX API | 마이크로소프트 윈도우 API |
---|---|---|
헤더 파일 포함 | #include <dlfcn.h>
|
#include <windows.h>
|
헤더를 위한 정의 | dl
( |
kernel32.dll
|
라이브러리 로드 | dlopen
|
LoadLibrary LoadLibraryEx |
내용 추출 | dlsym
|
GetProcAddress
|
라이브러리 로드 해제 | dlclose
|
FreeLibrary
|
자바 프로그래밍 언어에서 클래스는 ClassLoader 오브젝트를 사용하여 동적 로드가 가능하다. 이를테면:
Class type = ClassLoader.getSystemClassLoader().loadClass(name);
Object obj = type.newInstance();
Reflection 매커니즘은 또한 이미 클래스가 로드된 것이 아니라면 클래스를 로드할 수단을 제공한다. 현재 클래스의 클래스로더를 사용한다:
Class type = Class.forName(name);
Object obj = type.newInstance();