当一个进程发生缺页中断的时候,进程会陷入内核态,执行以下操作:1、检查要访问的虚拟地址是否合法2、查找/分配一个物理页3、填充物理页内容(读取磁盘,或者直接置0,或者啥也不干)4、建立映射关系(虚拟地址到物理地址)重新执行发生缺页中断的那条指令如果第3步,需要读取磁盘,那么这次缺页中断就是majfl...
                            
                            
                                分类:
其他好文   时间:
2014-07-03 22:30:43   
                                阅读次数:
217
                             
                    
                        
                            
                            
                                CLR垃圾回收器根据所占空间大小划分对象。大对象和小对象的处理方式有很大区别。比如内存碎片整理 —— 在内存中移动大对象的成本是昂贵的,让我们研究一下垃圾回收器是如何处理大对象的,大对象对程序性能有哪些潜在的影响。 大对象堆和垃圾回收 在.Net 1.0和2.0中,如果一个对象的大小超过8500.....
                            
                            
                                分类:
Web程序   时间:
2014-06-23 00:32:01   
                                阅读次数:
300
                             
                    
                        
                            
                            
                                转自:内存池设计与实现1. 内存池设计1.1 
目的在给定的内存buffer上建立内存管理机制,根据用户需求从该buffer上分配内存或者将已经分配的内存释放回buffer中。1.2 
要求尽量减少内存碎片,平均效率高于C语言的malloc和free。1.3 设计思路将buffer分为四部分,第1部分是...
                            
                            
                                分类:
其他好文   时间:
2014-05-31 17:49:57   
                                阅读次数:
290
                             
                    
                        
                            
                            
                                最近写了一个接受socket数据包,然后再重组上层协议包的东西。每次read到数据就将数据添加到一个链表的尾部,然后检查是否收到了一个完整的包。为了减少内存碎片,把用过的链表节点添加到另外一个链表中,这样下次可以从这个cache链表中重用节点。
       在debug的时候我把cache list中的数据打印出来,代码如下:
struct seg_node
{
    void* bu...
                            
                            
                                分类:
其他好文   时间:
2014-05-25 21:31:09   
                                阅读次数:
326
                             
                    
                        
                            
                            
                                Nginx的高性能的是用很多细节来保证,epoll下的多路io异步通知,阶段细分化的异步事件驱动,那么在内存管理这一块也是用了很大心血,上一篇我们讲到了slab分配器,我们可以可以看到那是对共享内存的管理的优化。Nginx在进程内也实现了自己的内存池,目的在于减少内存碎片,减少向操作系统的申请次数,减低模块开发难度。Nginx实现的内存池实际上非常简单。...
                            
                            
                                分类:
其他好文   时间:
2014-05-08 00:37:29   
                                阅读次数:
403
                             
                    
                        
                            
                            
                                GC.Collect()GC.WaitForPendingFinallizers()GC.KeepAlive尽量不要new很大的Object不要频繁的new生命周期很短的Object,这样会导致很多内存碎片引起频繁的压缩
                            
                            
                                分类:
其他好文   时间:
2014-05-05 21:47:03   
                                阅读次数:
448
                             
                    
                        
                            
                            
                                MongoDB采用了磁盘空间预分配的机制,为了避免磁盘碎片以及使用mmap后造成的近一步的内存碎片,但是随着数据的增删除改操作,数据文件不可避免的会产生空洞,造成磁盘空间和内存的浪费。本文说的是这方面的压缩,数据使用某些压缩算法进行压缩的讨论不在此范围。在MongoDB 
中,大概有两种方法可以解决这...
                            
                            
                                分类:
数据库   时间:
2014-05-01 15:55:48   
                                阅读次数:
428