
载入时动态链接是在将功能模块读入内存时把动态库中调用到的相关模块的内容载入内存。
运行时动态链接是在执行程序调用到模块内容时再将动态库中的相应模块载入到内存。
这里有两个时间问题。一是载入时间,二是执行时间。
静态链接由于是在一开始就把所有模块都加载进入内存,所以如果模块很多的话效率就会被大大拉低。
载入时动态链接是分别载入,当把一个模块载入内存时检查有调用关系的模块载入,比静态链接节省了许多开销。
运行时动态链接则是把当前模块调用的模块推迟到调用的时候再载入。
三者之间的关系就像是机q,冲锋q和手q
机q在一开始就把所有子d装好,开q的时候很快,但也很笨重。
冲锋q则是将子d分d夹存好,轻便了许多,但是会有一段装填时间。
手q就更加轻便了,但是d夹容量更小,装填的频率又变高了。
标准的答案!这个实现有点难度吧,按你的意思这个只在服务端运行,运行时是可以加载库的,但运行中这个库怎么切换到新的库,切换过程中怎么保护。而且动态链接库的加载时刻是什么时候,这个和动态库的实现、编译动态库时的选项以及 *** 作系统对动态库的处理都有关系。例如程序中用到的符号是在动态库加载时一次解析还是执行时用到再解析?动态库有没有初始化函数? *** 作系统是直接将动态库拷贝到内存(若需要)还是做memorymapping后通过virtualmemory系统按需调入?这样考虑下来,加载时间是什么是相当不明确的事情。建议看下《程序员的自我修养-链接,装载与库一书》,讲解的还是不错的。欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)