- 浏览: 188773 次
- 性别:
- 来自: 杭州
-
最新评论
-
hxz_qlh:
“M_MMAP_MAX用于设置进程中用mmap分配的内存块的最 ...
Glibc内存管理--ptmalloc2源代码分析(九) -
boyhailong:
总结的很好,顶
程序编码与调试 -
zdl1016:
关于mmap内存的增长方向,貌似应该是向下增长的,我连续申请三 ...
Glibc内存管理--ptmalloc2源代码分析(三十四) -
xly931:
请教大神,其实我有点疑惑的是为什么同一个库有映射到进程空间中, ...
linux进程内存布局 -
hengyunabc:
额,为什么在slideshare不能下载,在这里可以下载?
Glibc内存管理--ptmalloc2源代码分析(三十四)
文章列表
3.2 Ptmalloc内存管理概述
3.2.1简介
Linux中malloc的早期版本是由Doug Lea实现的,它有一个重要问题就是在并行处理时多个线程共享进程的内存空间,各线程可能并发请求内存,在这种情况下应该如何保证分配和回收的正确和高效。Wolfram Gloger在Doug Lea的基础上改进使得Glibc的malloc可以支持多线程——ptmalloc,在glibc-2.3.x.
3. 概述
3.1 内存管理一般性描述
当不知道程序的每个部分将需要多少内存时,系统内存空间有限,而内存需求又是变化的,这时就需要内存管理程序来负责分配和回收内存。程序的动态性越强,内存管理就越重要,内存分配程序的选择也就更重要。
3.1.1内存管理的方法
可用于内存管理的方法有许多种,它们各有好处与不足,不同的内存管理方法有最适用的情形。
1. C风格的内存管理程序
2.2 操作系统内存分配的相关函数
上节提到heap和mmap映射区域是可以提供给用户程序使用的虚拟内存空间,如何获得该区域的内存呢?操作系统提供了相关的系统调用来完成相关工作。对heap的操作,操作系统提供了brk()函数,C运行时库提供了sbrk()函数;对mmap映射区域的操作,操作系统提供了mmap()和munmap()函数。sbrk(),brk() 或者 mmap() 都可以用来向我们的进程添加
1. 问题
项目组正在研发的一个类似数据库的NoSql系统,遇到了Glibc的内存暴增问题。现象如下:在我们的NoSql系统中实现了一个简单的内存管理模块,在高压力高并发环境下长时间运行,当内存管理模块的内存释放给C运行时库以后,C运行时库并没有立即把内存归还给操作系统,比如内存管理模块占用的内存为10GB,释放内存以后,通过TOP命令或者/proc/pid/status查看进程占用的内存有时仍然为10G,有时为5G,有时为3G,etc
内存管理是操作系统的核心之一,最近在研究内核的内存管理以及 C 运行时库对内存的分配和管理,涉及到进程在内存的布局,在此对进程的内存布局做一下总结:
1. 32 位模式下的 linux 内存布局
图上的各个部分描述 ...
作为开发工程师每天需要处理的紧要的邮件可能不是太多,但无关紧要的邮件可能会有一大堆,针对这种情况,根据个人的一些体会,建议这样处理每天的邮件:
过滤低优先级的电子邮件。创建一个“
我不是专属收件人
”的过滤器,比如过滤公司内部群发的一些邮件到一个特定文件夹,每次检查该文件夹时只需要查看相应标题,感兴趣的可以仔细看看。如果太忙,就直接忽略这个文件夹中的邮件。
分离出高优先级邮件。对
专门发送给你本人的
邮件和你发出的邮件,
它们更可能与你本人的职责领域相关
,
它们更可能需要付诸行动
,
如果你本人不回应此事,这件事或许就没有人去做。
...
开发过程中需要做多少的测试才是足够的呢?我想要是没有标准,做再多的测试也是不够的,在测试的广度和深度上都要有个折中,在不同的阶段要有不同的重点,开发人员和测试人员要分工合作,发挥各自的优势。
对开发人员来说,对代码相对更熟悉一些,虽然在项目开发中有不同的分工,开发在测试出一个
bug
并修复的成本比测试人员测试出一个
bug
并报告给开发去修复要低得多,所以我们提倡开发人员做尽量多的测试,尽量把
bug
消灭在萌芽中,听说在
google
中的开发
/
测试
=10:1
,不知道是否属实,他们 ...
程序员
在软件开发过程中离不开
编码
和调试,这两个过程也是相辅相成的,我就个人的体会来谈谈这两个方面。
编码篇:
1
,程序为什么会有
bug
?其中一个比较关键的原因是程序员的主观因素造成的,比如编 ...
一直在
linux
平台上做开发工作已经几年了,但对
linux
内核都没有认真研究过,个人对
linux
的了解都停留在系统
api
的使用层面,对
linux
的底层设计了解甚少。在身边的同事,不凡有熟悉
linux
内核的高手,在他们的耳濡目染下,也激发了自己研究
linux
内核的激情,所以在自己的小黑上装上了
vmware
和
Ubuntu10.10
。
下面我将分享一下个人在搭建环境和学习
linux
内核的一些初步准备工作 ...