malloc分配连续虚拟内存,实际上物理不连续

翻译自:http://linux.die.net/man/3/malloc

    默认情况,linux遵循积极的内存分配策略,意味着当malloc函数返回一个非NULL的值,并不能保证
内存一定是有效的。为了防止系统出现内存紧张,OOM将会关闭一个或者多个进程。更多的消息,
可以参考/proc/sys/vm/overcommit_memory 和/proc/sys/vm/oom_adj,内核源码/vm/overcommit-accounting.

    通常malloc函数从堆上分配内存,调整堆的大小,请使用sbrk。当分配内存块大于MMAP_THRESHOLD字节,malloc实现分配一个私有匿名的映射mmap(2)MMAP_THRESHOLD默认值是128KB,可以用mallopt调整。如果资源限制,分配性能将会受到影响。

    为了避免中断多线程的应用程序,使用锁保护内存管理的数据结构,在多线程的进程中,可能存在
同时多个线程申请或者释放内存,它们可能被阻塞在这个锁上。所以glibc检测到这种情况
会分配一个额外的内存分配管理进程,对这些请求进行处理。

你可能感兴趣的:(多线程,linux,检测,应用程序,虚拟内存)