动态链接库(动态链接库与静态链接库相比,优势和劣势都在哪里?)
动态链接库(动态链接库与静态链接库相比,优势和劣势都在哪里?),哪吒游戏网给大家带来详细的动态链接库(动态链接库与静态链接库相比,优势和劣势都在哪里?)介绍,大家可以阅读一下,希望这篇动态链接库(动态链接库与静态链接库相比,优势和劣势都在哪里?)可以给你带来参考价值。
一、优势
动态链接库有两个设计目标,也是它的优势:
动态链接。例如MySQL支持MyISAM和InodeDB等不同的存储引擎,你也可以为它添加新的存储引擎,那么这个存储引擎就只能编译成动态链接库的形式。因为MySQL释出(release)的时候,还不知道有会有谁为它写新的存储引擎,所以也不知道应该链接那个静态库。当然动态链接库,MySQL有源码,你可以重新编译一下,把你的新存储引擎链接进去,但是像Oracle这种没有源码的程序,就只能用动态链接库解决这个问题了。共享,节约内存。例如libc.so提供了基础的C语言函数和系统调用接口,每个应用程序都会用到,如果每个进程都用静态库,那么printf这个函数的代码在内存中会有许多份,每个进程都有一个副本。使用动态链接库就可以避免这个问题,同一个动态链接库在多个不同进程之间的代码是共享的,不会占用多余的内存空间。数据不是共享的,每个进程都有自己的独有数据。二、缺点
1、当系统中多个应用程序都用了一个动态链接库动态链接库,但是要求的版本不同,这时动态链接库之间就会相互干扰。
2、性能开销。动态链接库为了做到“共享代码,但是不共享数据”,引入了不小的开销,调用动态链接库中的函数,需要好几次间接内存访问才能走到函数入口,全局数据也是。
三、其他
用今天的眼光来看,动态链接库节约内存这个优点越来越不重要了,特别是在服务器上:a)、现在PC的内存都很大,指令占用那一点空间已经微不足道了;b)、由于动态链接库冲突等问题,越来越多的服务器应用更倾向于把所有用到的环境文件用docker打包,这样一来占用内存也不少。
总结:以上内容就是针对动态链接库(动态链接库与静态链接库相比,优势和劣势都在哪里?)详细阐释,如果您觉得有更好的建议可以提供给哪吒游戏网小编,动态链接库(动态链接库与静态链接库相比,优势和劣势都在哪里?)部分内容转载自互联网,有帮助可以收藏一下。
