Linux   发布时间:2022-04-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了linux – 共享内存中的Shared_dirty vs Private_dirty大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

我有使用共享内存的多进程应用程序.我试图在我的应用程序中检测内存泄漏.我在/ proc / $pid / smap中找到了这个 2b51cd2b2000-2b53b8aa4000 rw-s 00000000 00:09 17151225 /dev/zero (deleted) Size: 8052680 kB Rss:
我有使用共享内存的多进程应用程序.我试图在我的应用程序中检测内存泄漏.我在/ proc / $pid / smap中找到了这个

2b51cd2b2000-2b53b8aa4000 rw-s 00000000 00:09 17151225                   /dev/zero (deleted)
  Size:           8052680 kB
  RSS:              31608 kB
  Shared_Clean:      1524 kB
  Shared_Dirty:     25736 kB
  Private_Clean:        0 kB
  Private_Dirty:     4348 kB
  Swap:                 0 kB
  Pss:               6945 kB

这是我分配的共享内存.(大小告诉我这是我用mmap分配的内存)

我试图了解内存本身共享的上下文中共享/私有之间的区别.看’s’标志.

如果任何人可以解释Shared_Clean与Private_Clean之间的区别
Shared_Dirty vs Private_Dirty在共享内存的上下文中.

解决方法

Clean和Dirty之间的区别是指自从写入内存以来页面是否已写出到后备存储.对于/ dev / zero的映射,页面显然从不写出,因此只读取了干净页面,而写入了脏页面.

对于共享映射,Private和Shared之间的区别在于页面是否仅由您正在检查的进程引用,或者它们是否已被多个进程引用.

总结如下:

> Shared_Clean是映射中已被此进程引用的页面,以及至少一个其他进程,但不是由任何进程编写的;
> Shared_Dirty是映射中已被此进程引用的页面,并且至少由其中一个进程编写;
> Private_Clean是映射中已读取但未由此进程写入但未被任何其他进程引用的页面;
> Private_Dirty是映射中已由此进程写入但未被任何其他进程引用的页面.

页面可以在写入时从“清理”移动到“脏”,在另一个进程引用它们时从“私有”移动到“共享”.

如果映射真实的磁盘文件,那么当内核写出页面时,页面也可以从Dirty转移到Clean.

大佬总结

以上是大佬教程为你收集整理的linux – 共享内存中的Shared_dirty vs Private_dirty全部内容,希望文章能够帮你解决linux – 共享内存中的Shared_dirty vs Private_dirty所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: