背景我们都知道,对于一个高性能的服务器端程序来说,内存的使用非常重要。C++提供了new/delete来管理内存的申请和释放,但是对于小对象来说,直接使用new/delete代价比较大,要付出额外的空间和时间,性价比不高。另外,我们也要避免多次的申请和释放引起的内存碎片。一旦碎片到达一定程度,即使剩...
分类:
数据库 时间:
2014-08-11 17:11:22
阅读次数:
334
在赋值运算符中要特别注意可能出现别名的情况,其理由基于两点。其中之一是效率。如果可以在赋值运算符函数体的首部检测到是给自己赋值,就可以立即返回,从而可以节省大量的工作,否则必须去实现整个赋值操作。另一个更重要的原因是保证正确性。一个赋值运算符必须首先释放掉一个对象的资源(去掉旧值),然后根据新值分配...
分类:
其他好文 时间:
2014-08-11 14:56:22
阅读次数:
212
这两天在折腾给一个项目打安装包,第一次接触软件打包,用的Advanced Installer(以下简称AI),应该说如果安装过程没有特殊动作(常规动作指释放文件、写注册表、建快捷方式等)的话,倒挺傻瓜的,按照向导和界面操作就能打好一个包。但我的安装动作包括:- 提供一个ComboBox列出已安装打印...
分类:
其他好文 时间:
2014-08-11 14:44:02
阅读次数:
247
1.Valgrind简介 1.在我们编写C/C++的时候,最常见的错误之一就是内存泄露,这样的问题其实跟程序员的编程习惯密不可分。如果你在申请内存空间之后能够马上在合适的位置释放内存。会极大程度的避免内存泄漏的情况。但是人非圣贤,孰能无过。有时候我们确实忘记释放内存而导致了比较严重的错误,所以这个时...
分类:
系统相关 时间:
2014-08-11 14:36:32
阅读次数:
190
在写代码的时候,可能会忽略释放内存、缓存之类的处理。
有时使用的类会自动调用释放方法,但在我们不知道是否是否的情况下,建议亲自是否。
方法一:Dispose方法。
主动去调用该方法,清除内存,释放空间。
方法二:继承IDisposable借口。
若没有Dispose方法,那么主动让类去继承IDisposable,可重写Dispose方法。
然后再主动调用方法释放内存。
方法三:usi...
分类:
其他好文 时间:
2014-08-11 11:58:22
阅读次数:
263
概括的说,指针其实就是可变数组的首地址,说是可变数组,是指其包含内容的数量的可变的,并且是可动态申请和释放的,从而充分节约宝贵的内存资源。我一向喜欢一维数组,除非万不得已,我一般是不用二维数组的,多维的则更是很少涉足了。因为一维简单,容易理解,而用指针指向的多维数组就具有相当的复杂性了,也因此更具有...
分类:
其他好文 时间:
2014-08-11 11:24:22
阅读次数:
184
重写通知中心类笔者重新设计了通知中心类,功能完全与系统的通知中心一致,但有着比系统通知中心更优秀的地方:1. 注册了通知中心不需要手动移除,如果注册对象自动释放了,在通知中心中注册的信息也会自动消失2. 传递的参数可以是任何的对象,包括数组,字典等等一切对象3. 基于NSObject的categor...
分类:
其他好文 时间:
2014-08-11 09:54:31
阅读次数:
348
侯捷翻译的《STL源码剖析》stl_alloc.h阅读笔记。讲解的内存的配置与释放。...
分类:
其他好文 时间:
2014-08-11 00:20:11
阅读次数:
290
一.JS的执行特点 源于单线程的特性, JS在一段时间内只能执行一部分代码, 那么, 当有多块代码需要执行时, 就需要排队等候了.二.单线程与异步事件(1) 什么是异步事件? 异步事件是像鼠标点击、计时器释放、XMLHttpRequest请求完成这样的动作, 由于我们不知道它何时执行, 所以, 可以...
分类:
编程语言 时间:
2014-08-11 00:17:41
阅读次数:
307
内存泄漏:1.缓存2.队列消费不及时3.作用域未释放缓存:必须要有过期策略1.缓存限制策略limitablemapLRU2.缓存解决方案进程自身不存储状态,进程外缓存 1)能减少常驻内存的对象的数量,让垃圾回收更高效 2)进程之间可以共享缓存常用的缓存:RedisMemcached
分类:
其他好文 时间:
2014-08-10 23:58:30
阅读次数:
657