当程序在当前不在内存驻留页面集中的页面上请求地址时,就会发生页面错误 。 发生页面错误时发生的情况是,遇到页面错误的线程被置于“等待”状态,而操作系统在磁盘上找到了特定页面并将其恢复到物理内存。 区分次要/软页面错误和主要/硬页面错误很重要;
- 次要 –当页面位于内存中的备用位置时发生。 由于预取操作导致页面不再是工作集的一部分但尚未移至磁盘或它驻留在内存中,因此可能会发生这种情况
- Major –当页面不在物理内存中或该进程创建的内存映射文件中时,发生该事件。
何必呢?
- 延迟时间很短–您可能会忽略次要错误,但是,如果物理内存不足和硬错误过多,则主要错误可能会损害应用程序的性能,因此需要立即进行修复。
- CPU利用率低 -颠簸的直接结果
接下来是什么?
- 增加物理内存 –这可能很容易开始,但是,如果您已经拥有大量房地产机会,则需要回到设计室,因为这可能会延迟问题的发生。
- 减少整体内存使用量 –考虑正确的数据类型,重复数据删除,有效(反序列化)
- 改善内存局部性 –考虑根据数据访问模式选择算法以减少页面错误
翻译自: https://www.javacodegeeks.com/2015/03/interpret-page-fault-metrics.html