windows平台DLL的加载机制
来源:互联网 发布:淘宝怎做直扫付款 编辑:程序博客网 时间:2024/06/05 06:50
最近一直在配合测试做性能测试,前一段时间谈到了LoadRunner和动态加载(或延时加载)的问题,真的是被windows的延时加载机制搞得有点头大,还好真相总是在我面前无处藏身。下面我抽象了四个问题,依次回答完 这四个问题,相信你对windows的延时加载机制会有一个深入的了解。
我们现在假设有一个宿主程序A.EXE,它依赖B.DLL,C.DLL和D.DLL,其中C.DLL依赖于B.DLL,而D.DLL又依赖C.DLL。在工程配置中B.dll分别被A.exe和C.dll延时加载,C.dll又被D.dll延时加载,下面就是我提出的四个问题。
1.依照以上描述,请问程序启动时B.dll会被延时加载还是静态加载?
2.在之前的配置基础上,在A.exe工程配置中将C.dll改成延时加载,请问程序启动时B.dll会被延时加载还是静态加载?
3.在2的配置基础上,在A.exe工程配置中将D.dll改成延时加载,请问程序启动时B.dll会被延时加载还是静态加载?
4.在3的配置基础上,将C.dll再改回静态加载,A.dll又将被如何加载?
实际上,操作系统加载模块是一个递归的过程。比如A依赖B,B又依赖C和D,C依赖...,D依赖...。那么当A准备加载B时,会先查看B依赖谁?一看B依赖于C和D,则检查C又依赖谁,如此递归,直到叶子节点。现在开始准备加载叶子,在加载叶子之前,先检查叶子是否被加载过了,如果加载过了就不加载,继续下一个模块;如果没有加载,则检查该叶子节点是否需要延时加载,如果是延时加载,则暂不加载,继续一个模块;若无须延时加载,则立即加载该叶子模块。如此递归!
- windows平台DLL的加载机制
- Windows平台下dll的标准内容
- 插件平台的类加载机制
- Windows DLL文件的加载过程[简述]
- Windows加载DLL
- Windows mobile 6.0平台 CoreDll.dll所包含的API
- Windows mobile 6.0平台 CoreDll.dll所包含的API
- Windows mobile 6.0平台 CoreDll.dll所包含的API
- Windows平台下动态链接库DLL的总结
- windows启动时加载*.dll文件出错的解决办法
- Windows DLL基本原理与加载连接的实现--赵星宇
- Windows DLL基本原理与加载连接的实现
- windows 2008 server 下,C# 加载dll失败的问题
- apicloud git-svn 地址冲突,导致代码管理功能不可用.这个问题是由 windows 系统自身DLL加载机制引起的.一般重启电脑即可解决
- Windows通信机制和DLL机制
- demo集合第1弹:加载windows dll库,并使用dll中函数的方法
- UG NX 加载.net dll机制
- 加载dll的类
- javascript动态字母
- c# des 加密解密
- 打包解决方案---WSPBuilder真不错
- mysql 数据类型java类型对照
- 选择服务器虚拟化技术的十大因素
- windows平台DLL的加载机制
- Net序列化介绍
- 完整类库列表struts2.0
- SRM 436 DigitsSwap (math)
- DNSPod
- 将自己的网站提交到亚马逊分类
- 查询返回的recordcount=-1的解决办法
- port 安装 make 命令
- hmailserver配置(图)