linux – 什么是脏私有内存?
我正在64位 Linux系统上开发一个应用程序.正如我所看到的,我的应用程序正在吃太多脏堆内存.谈论堆内存,“脏”是什么意思?是什么让它出现以及可以采取哪些措施来防止它出现? 编辑 我最好解释一下我的应用程序执行的操作. 我的应用程序运行在两个线程中:第一个线程将作业发送到队列,然后在另一个线程中执行.因此,第一个线程分配要排队的页面,第二个线程将它们出列,执行它们的作业并释放它们.所有这些操作都以线程安全的方式执行. 所以我对这个东西进行了测试,使它排队100000000个作业并执行它们.在特定时刻之前,内存使用量会增加.然后,当排队过程结束并且仅剩余出队时,内存使用莫名其妙地不会减少.最后,当所有作业都出列并执行时,释放所有内存.因此,内存泄漏似乎在出列过程中发生,因为当它完成所有内存被释放时,我发现它的代码没有任何错误. 我知道如果我在这里发布我的代码会更好,但它太大了.但是,根据我的补充,是否有人猜测可能导致这种情况的原因是什么? 解决方法谈论即使在释放一些块之后内存不减少,你最好在匿名模式下使用mmap,如下所示:mmap(NULL,chunck_size,PROT_READ | PROT_WRITE,MAP_PRIVATE | MAP_ANONYMOUS,-1,0); 它不映射文件描述符,并返回指向内存块的指针,当您取消映射时,该内存块会立即返回到操作系统.但是,mmap需要系统调用,这比malloc慢.因此,您应该使用mmap来分配大页面. (编辑:岳阳站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- linux – 如何通过丢帧来加速视频?
- 如何在Linux机器上编写Flash Action Scripts?
- linux脚本与netcat在x小时后停止工作
- LINUX教程:Linux sort命令中文手册(info sort翻译)
- 有没有简单的方法可以在Linux下用C/C++获得夏令时转换时间
- linux – “grep -rnw”:在所有文件中搜索字符串
- 如何在.dll和.so中使用JNA与相同的回调签名
- 使用Linux上的C访问Sony Playstation SixAxis Controller
- linux – 编辑fstab和mtab后是否需要重新启动服务器?
- LINUX教程:CentOS 7虚拟机网卡启动不了解决办法
- 使用quadmath的G 4.6.3 Linux中的四倍精度
- Qt不会在Linux中的调试/发布文件夹中创建输出文件
- Linux中的每个线程CPU统计信息
- LINUX入门:Ubuntu 16.04 下将GCC-5.4降级到 4.8
- c – `libusb_attach_kernel_driver`无效
- linux-kernel – Linux:使用U-Boot和Flat Image
- 在Linux上用C实现一个线程安全的通用堆栈
- 8 Pratical Examples of Linux “Touch” Comman
- linux – 如何检查iptables中每条规则的命中数?
- 基于哪个Linux将内存从RAM交换到交换文件的具体条