什么可能导致C ++级别的页面错误

伊夫

我是C ++开发人员,我想知道什么可能导致C ++级别的页面错误。

我读过有关页面错误的一些文章,我想fork()malloc/new可能导致页面错误。

还有其他可能导致页面错误的原因吗?

大型可执行文件是否更有可能导致页面错误?

具有非常复杂的逻辑结构的可执行文件是否更有可能导致页面错误?

施洛姆

实际上,malloc不会引起任何页面错误。内存仅是虚拟分配的,因此在使用前,它既不会占用RAM也不会占用磁盘空间。如果您确实想快速引起页面错误,则必须实际访问有问题的缓冲区以进行读取或写入。

一切都归结为内存使用情况,如果应用程序正在访问相同的2-3 GB数据,则它几乎可以正常运行而不会发生任何页面错误(假设当前没有其他应用程序在滥用您的RAM)。因此,只有当您的应用程序需要访问大量内存或因缺乏使用而变成“冷”内存时,您才会遇到页面错误。

此外,即使您需要从该页面访问单个字节,操作系统也会从磁盘加载整个页面。这意味着,与将所有数据集中在同一附近相比,如果您的数据分散在内存的大区域中,则页面错误可能会更多。

要了解这种机制,一个好的测试应用程序将是分配巨大的缓冲区(超出RAM的容纳能力),然后开始以4K的间隔修改单个字符(在Linux和Windows中通常为单个页面的大小)。这个想法是用最少的精力去弄脏尽可能多的页面,类似于破坏完美的白色纸包装,每页上只有一个黑点的概念,直到您的RAM无法容纳那么多脏页并必须将它们交换到磁盘以加载其他页面供您清理。

while (true) {
    char * data = malloc(HUGE_NUMBER)
    for (size_t i=0 ; i<HUGE_NUMBER ; i+=4096)
        data[i] = (char)rand(); // dirty in 4K intervals
}

因此,最大程度地减少页面错误的一个好方法是保持数据访问模式的较高的内存局部性(使用在内存中顺序排列的数组,而不要使用可能遍布各处的列表或映射),并避免编写需要更多RAM的应用程序而不是目标服务器所能提供的。

关于可执行文件的大小,还取决于实际使用了多少代码。如果您的应用程序花费其90%的时间运行10%的代码,则由于可执行文件的大小而导致页面错误的可能性很低,反之亦然。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么我的较低级别的日志不写入文件,但错误和更高级别的文件呢?

来自分类Dev

什么可能导致 `UserManager` 返回错误的用户?

来自分类Dev

使用较高级别的类型时,错误消息“ Universe不一致”是什么意思?

来自分类Dev

是什么导致此“可能的精度损失”错误?

来自分类Dev

较低级别的事件是什么?

来自分类Dev

记录由web.xml中的错误页面处理的所有Tomcat级别的异常

来自分类Dev

Jekyll:不同级别的“包含菜单”会导致问题

来自分类Dev

在Manjaro上的nvm中发出正在运行的节点的问题-可能是操作系统级别的错误,但不确定,因为我是初学者

来自分类Dev

使用Apache进行TLS级别的压缩是否可能?

来自分类Dev

最低级别的数据结构是什么?

来自分类Dev

Mesos:什么是OS级别的资源分配技术?

来自分类Dev

为什么类型级别的计算需要Aux技术?

来自分类Dev

什么是一些类型级别的TypeScript库?

来自分类Dev

“字节级别的地址解析”是什么意思?

来自分类Dev

什么是API级别的Android用户群

来自分类Dev

为什么类级别的typedef不能从模板继承?

来自分类Dev

While(“ abc”); 导致java中的错误,并且不会导致c中的任何错误。为什么?

来自分类Dev

为什么此C代码段不会导致分段错误?

来自分类Dev

C ++:是什么导致此堆栈粉碎错误?

来自分类Dev

为什么strlen会导致C中的分段错误?

来自分类Dev

是什么导致了我的 PowerBuilder C0031 Synax 错误?

来自分类Dev

XML错误,“根级别的数据无效”

来自分类Dev

URL在浏览器中工作时,什么可能导致“ connect ETIMEDOUT”错误?

来自分类Dev

Joblib因无法解释的错误而崩溃,可能是什么原因导致的?

来自分类Dev

是什么可能导致ShellExecute返回SE_ERR_OOM(错误8)?

来自分类Dev

什么可能导致此Glassfish / JDBC错误“未选择数据库”

来自分类Dev

当在Wordpress中正确显示的URL正确时,可能导致404错误的原因是什么?

来自分类Dev

什么可能导致此Glassfish / JDBC错误“未选择数据库”

来自分类Dev

Dotnet watcher - 路径中的非法字符 - 什么可能导致此错误?

Related 相关文章

  1. 1

    为什么我的较低级别的日志不写入文件,但错误和更高级别的文件呢?

  2. 2

    什么可能导致 `UserManager` 返回错误的用户?

  3. 3

    使用较高级别的类型时,错误消息“ Universe不一致”是什么意思?

  4. 4

    是什么导致此“可能的精度损失”错误?

  5. 5

    较低级别的事件是什么?

  6. 6

    记录由web.xml中的错误页面处理的所有Tomcat级别的异常

  7. 7

    Jekyll:不同级别的“包含菜单”会导致问题

  8. 8

    在Manjaro上的nvm中发出正在运行的节点的问题-可能是操作系统级别的错误,但不确定,因为我是初学者

  9. 9

    使用Apache进行TLS级别的压缩是否可能?

  10. 10

    最低级别的数据结构是什么?

  11. 11

    Mesos:什么是OS级别的资源分配技术?

  12. 12

    为什么类型级别的计算需要Aux技术?

  13. 13

    什么是一些类型级别的TypeScript库?

  14. 14

    “字节级别的地址解析”是什么意思?

  15. 15

    什么是API级别的Android用户群

  16. 16

    为什么类级别的typedef不能从模板继承?

  17. 17

    While(“ abc”); 导致java中的错误,并且不会导致c中的任何错误。为什么?

  18. 18

    为什么此C代码段不会导致分段错误?

  19. 19

    C ++:是什么导致此堆栈粉碎错误?

  20. 20

    为什么strlen会导致C中的分段错误?

  21. 21

    是什么导致了我的 PowerBuilder C0031 Synax 错误?

  22. 22

    XML错误,“根级别的数据无效”

  23. 23

    URL在浏览器中工作时,什么可能导致“ connect ETIMEDOUT”错误?

  24. 24

    Joblib因无法解释的错误而崩溃,可能是什么原因导致的?

  25. 25

    是什么可能导致ShellExecute返回SE_ERR_OOM(错误8)?

  26. 26

    什么可能导致此Glassfish / JDBC错误“未选择数据库”

  27. 27

    当在Wordpress中正确显示的URL正确时,可能导致404错误的原因是什么?

  28. 28

    什么可能导致此Glassfish / JDBC错误“未选择数据库”

  29. 29

    Dotnet watcher - 路径中的非法字符 - 什么可能导致此错误?

热门标签

归档