동적 적재

동적 적재(dynamic loading) 또는 동적 링크(dynamic linking)은 컴퓨터 프로그램이 메모리로 라이브러리 또는 다른 프로그램을 적재/링크하는 방식으로, CPU의 메모리 사용량을 줄이기 위해 일부 라이브러리 코드의 적재/링크를 미뤄둔다. 미뤄진 라이브러리 코드는 생성된 실행 파일에 포함되지 않으며, 동적 링크 라이브러리(.dll)에 저장된다. 또한 이는 프로그램 실행 도중 필요시, CPU의 호출에 의해 링크, 적재된다.

C/C++

[편집]

요약

[편집]
이름 표준 POSIX/UNIX API 마이크로소프트 윈도우 API
헤더 파일 포함 #include <dlfcn.h> #include <windows.h>
헤더를 위한 정의 dl

(libdl.so, libdl.dylib 등. OS에 따라)

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();

같이 보기

[편집]