在执行程序时,整个库是否会加载到内存 (RAM) 中
Whether the complete library will get loaded to memory (RAM) while execution of a program?
在静态和动态库的情况下会有什么不同?
我了解静态和动态库的创建和使用,但我对将库加载到主内存有疑问。 如果我们只从库中调用一个函数,静态/动态库是否会完全加载到 RAM。
例如,假设我们有 10MB 大小的库,并且我们只调用该库中的一个函数,是加载完整的库还是仅加载调用的函数对象代码? 静态和动态库的情况是否相同?(如果我们使用静态库可执行文件大小会更多,但是加载时间呢)
提前感谢!
Linux(与所有具有按需分页的现代操作系统一样)将在加载时映射整个库,但只有页面必须读取,例如:初始化库,解析所有外部(非延迟)符号。
这些任务大多委派给用户模式动态加载程序。
从未写入或之后由 KSM(内核同页合并)重新合并的部分图像只能存储一次,从而减轻了内存压力。
当需要动态链接时,内核引导动态 链接器(ELF 解释器),它初始化自身,然后加载 指定的共享对象(除非已加载)。
IBM:Linux 动态库剖析
相关文章:
- 原子加载和存储与内存顺序放宽
- 如何从内存缓冲区加载张量流图
- 我在 IDA 或 dbg 或 olly 上看到的内存是否与我在 RAM 上实时加载的内存相同?
- 从C/C++(Win64)中的内存加载64位DLL
- 对外部函数的调用是否强制从内存加载
- 将使用 4 或 8 个对齐规则将加载处理到内存中
- C++:类如何将自身加载到内存中以递增全局变量?
- 加载字节数组(从内存)到libpng c
- 将内存保存到文件并加载它而不必解析数据?
- 加载时间,遍历时间,不同数据段C/C 的内存使用率
- 急切地加载整个模型以估计张量流的内存消耗
- 从内存加载动态库
- 为什么编译器在循环中从内存加载此指针
- SFML无法从内存加载图像,未提供任何数据
- 在启动时从内存加载QImages
- 在非托管程序中托管CLR时从内存加载程序集
- CImage::在不使用CreateStreamOnHGlobal的情况下从内存加载()
- 当从内存加载PNG时,Libpng错误无效的块类型
- gdkpixbuf从内存加载图像
- 从内存加载CA证书