0
A
回答
1
可能是页面错误问题。如果malloc占用一大块RAM,物理RAM可能不会立即分配,某些页表项将被设置。物理内存将不会被分配,直到您第一次访问它的位置。这涉及
- 页面错误,
- 找到一个物理内存页
- 该页
- 上归零每个位置更新页面表
这来讲是一个昂贵的操作时间和将发生一次每个分配的页面(550 x 4kbyte页为您分配的RAM)
相关问题
- 1. 静态腐败与堆栈损坏之间的差异
- 2. 进程虚拟内存 - 堆栈和堆之间的空间
- 3. 访问静态和堆内存的速度
- 4. 栈和堆内存
- 5. 即时编译和堆栈替换之间的差异
- 6. 堆中的对象与堆栈内存之间的混淆
- 7. 通过分配堆或堆栈创建的指针之间的差异
- 8. 机器之间差异堆栈粉碎行为的原因
- 9. 如果大部分数据都堆在堆栈上,堆栈内存的主要重要性/作用是什么?
- 10. 静态与非静态堆栈
- 11. 为什么堆栈和堆都需要内存分配
- 12. 关于堆栈和堆栈内存使用的问题
- 13. 堆栈空间异常
- 14. WebAssembly堆栈/堆栈指针初始化和内存布局
- 15. 数组和堆栈之间的区别?
- 16. Python是否有静态对象,堆栈对象和堆对象?
- 17. C++堆状态差异
- 18. 的memcpy堆栈内存
- 19. Android中的堆栈内存
- 20. JVM - 堆栈和堆栈
- 21. 动态堆栈内存重新分配
- 22. 静态枚举和静态结构之间的差异
- 23. .NET EXE和DLL之间的堆栈/堆区别
- 24. 异常和堆栈跟踪
- 25. .NET堆栈内存限制
- 26. C堆栈内存布局
- 27. 堆栈内存位置
- 28. 堆栈帧内存分配
- 29. 动态堆栈
- 30. 从CL_MEM_READ_WRITE和CL_MEM_READ标志创建的内存读取速度之间的差异
为什么应该有更多的页面fau当我更频繁地重新分配块时? iPad L2缓存为1MB,因此静态/堆栈内存也会出现页面错误。调零参数仅适用于calloc-ed内存。 Malloc不会记忆零。您能否向您的帖子添加更多解释? – Etan 2011-12-28 17:04:59
@Etan:据推测它不会重复使用相同的内存块,或者在释放内存时将内存回送给操作系统(内存在iDevices上受限,所以这绝对是一种可能性)。静态存储器是永久分配的,堆栈存储器可能会在第一次使用时永久分配。 – JeremyP 2011-12-28 17:08:17
因此,基本上延迟的分配是在这里杀死我的。这也解释了为什么calloc比memset或{0}初始化器快得多。每次使用同一块内存不应该改变页面错误的数量,因为即使在旧页面被重用的情况下,该页面在免费呼叫之后仍会变脏。 – Etan 2011-12-28 17:12:38