1.内存泄漏的定义
 
   一般我们常说的内存泄漏是指堆内存的泄漏。堆内存是指程序从堆中分配的,大小任意的(内存块的大小可以在程序运行期决定),使用完后必须显示释放的内存。应用程序一般使用malloc,realloc,new等函数从堆中分配到一块内存,使用完后,程序必须负责相应的调用free或delete释放该 内存块,否则,这块内存就不能被再次使用,我们就说这块内存泄漏了。
 
2、内...
                            
                            
                                分类:
编程语言   时间:
2015-02-18 11:54:44   
                                阅读次数:
246
                             
                    
                        
                            
                            
                                内存的碎片化 如果用C语言直接malloc,free来向操作系统申请和释放内存时,在不断申请和释放的过程中,形成了一些很小的内存判断,无法再利用。这种空闲但无法利用内存的现象称为内存的碎片化。 slab allocator 缓解内存碎片化 memcached用slab allocator机...
                            
                            
                                分类:
系统相关   时间:
2015-02-06 12:53:46   
                                阅读次数:
219
                             
                    
                        
                            
                            
                                本文引自:http://www.cnblogs.com/yukaizhao/archive/2011/11/21/dot_net_gc_large_object_heap.html CLR垃圾回收器根据所占空间大小划分对象。大对象和小对象的处理方式有很大区别。比如内存碎片整理 ------ 在内存中...
                            
                            
                                分类:
Web程序   时间:
2015-01-29 09:18:59   
                                阅读次数:
154
                             
                    
                        
                            
                            
                                c++中的placement new是::operator new的重载版本,用于在已经分配好的内存上创建对象。这样就可以在用户空间对内存进行操作,减少了对象生成的成本,控制对象的地址从而减少内存碎片,对象池估计也是这么搞的吧。class A{public: A(){ cout<...
                            
                            
                                分类:
编程语言   时间:
2015-01-27 00:18:04   
                                阅读次数:
261
                             
                    
                        
                            
                            
                                1,伙伴系统的作用:伙伴系统主要是为了高效使用物理内存,尽量减少内存碎片的产生2,伙伴系统的概念:系统中的内存总是两两分组,每组中的两个内存块称为伙伴3,伙伴系统的原理: 伙伴系统是相对于struct zone而言,将每个zone的空闲内存分为最多11个数组,比如第一个数组里管理着2^0页的内存,所...
                            
                            
                                分类:
系统相关   时间:
2015-01-26 21:02:30   
                                阅读次数:
196
                             
                    
                        
                            
                            
                                http://blog.csdn.net/vanbreaker/article/details/76642961,为什么需要slab分配器:利用伙伴系统进行分配内存只能按照页的单位进行分配,这样会造成很多的内存浪费,多了很多内存碎片,比如只需要申请10字节的,结果分配了一个页。2,slab分配器和伙...
                            
                            
                                分类:
系统相关   时间:
2015-01-26 20:52:42   
                                阅读次数:
281
                             
                    
                        
                            
                            
                                1.尽量减少和避免不必要的对象2.优化算法和数据结构3.采用非托管代码或者模块编写数据处理逻辑4.NET应用程序的内存一定程度上受垃圾回收的影响。并指出,一些数据结构如List,系统会分配多余的空间。可以使用值类型而不是引用类型,不要创建大对象,以免产生内存碎片等等降低内存占用的建议。5. 采用这种...
                            
                            
                                分类:
Web程序   时间:
2015-01-26 16:50:14   
                                阅读次数:
159
                             
                    
                        
                            
                            
                                最近写的一个程序中需要频繁的申请和释放零碎的内存块,这些内存块的大小却只有简单的几种。如果直接使用系统调用malloc/free、new/delete进行内存分配和释放,则效率很低。程序运行时间长了会产生大量的内存碎片。想起uC/OS-II 里面提供了个内存分配单元,正好满足我的需要。就把里面相关的代码扒了出来。写成了一个内存池的类。
 
这个内存池的功能非常的简单,初始化时分配一大块内存,然...
                            
                            
                                分类:
其他好文   时间:
2015-01-23 16:24:55   
                                阅读次数:
205
                             
                    
                        
                            
                            
                                ART运行时和Dalvik虚拟机一样,在堆上为对象分配内存时都要解决内存碎片和内存不足问题。内存碎片问题可以使用dlmalloc技术解决。内存不足问题则通过垃圾回收和在允许范围内增长堆大小解决。由于垃圾回收会影响程序,因此ART运行时采用力度从小到大的进垃圾回收策略。一旦力度小的垃圾回收执行过后能满足分配要求,那就不需要进行力度大的垃圾回收了。本文就详细分析ART运行时在堆上为对象分配内存的过程。...
                            
                            
                                分类:
其他好文   时间:
2015-01-22 01:49:30   
                                阅读次数:
222
                             
                    
                        
                            
                            
                                c/c++可以自己管理内存,像nginx可以根据自己的业务特点,为每一个请求分配一个内存池,请求结束,内存池也就可以释放了
python,node.js这样的高级语言怎么解决内存碎片问题呢?
鼓吹node.js的人都会提到node.js有谷歌的v8引擎,他是有多先进,但他没想过v8是为浏览器设计的,他是不会遇到像服务端程序会遇到的内存碎片问题,一个页面不可能一直打开着吧,关掉页...
                            
                            
                                分类:
编程语言   时间:
2015-01-21 11:39:10   
                                阅读次数:
244