动态链接是什么
动态链接是与静态链接相对的一种程序执行方式与模块组织的方式。说到动态链接,则需要和静态链接进行对比,才更好的解释动态链接。
静态链接的缺点
静态链接对于目标文件的组织是将所有应用到的的代码经过链接后,都合并成一个可执行文件。但这种将所有涉及到的代码都引用的方式存在很多的弊端。
1. 磁盘空间占用过大
因静态链接方式在链接阶段会将所有涉及到目标文件链接成一个单独的可执行文件。当一个经常用到的库被多个目标文件引用,当存在有很多个静态链接文件使用到这个库时,将极大的浪费磁盘空间。如A目标文件中的func 方法被成千上万个文件通过静态链接引用时,将造成非常大的浪费,实际上A文件存在一份便可以满足。
2. 内存占用过大
当一个可执行文件被加载多次成为多个进程时,实际上进程中的比如代码段的数据大部分内存都是可以共享的,但以可执行文件以静态链接运行时,在内存中都有多份副本,很大的一部分被浪费掉了。