Delphi 2009+ 的 System.SysUtils提供了一个类似.Net的StringBuilder,用于存储字符数组。 很多人不明白为什么要用TStringBuilder, Delphi中有string,有几乎所有TStringBuilder的功能函数, System.SysUtils中 ...
什么是虚拟内存? 先直接摘抄一段 wikipedia 上的介绍。 虚拟内存是计算机系统内存管理的一种技术。它使得应用程序认为它拥有连续的可用的内存(一个连续完整的地址空间),而实际上,它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。 对于 C 语言里面的变 ...
分类:
系统相关 时间:
2017-05-14 18:07:43
阅读次数:
279
堆(heap)和栈(stack)有什么区别?? 简单的可以理解为: heap:是由malloc之类函数分配的空间所在地。地址是由低向高增长的。 astack:是自动分配变量,以及函数调用的时候所使用的一些空间。地址是由高向低减少的。 预备知识—程序的内存分配 一个由c/C++编译的程序占用的内存分为 ...
分类:
编程语言 时间:
2017-05-09 11:27:56
阅读次数:
169
1、redis 是一个键值对存储数据的内存数据库;存储的数据基本单元可以看作是 字节流;值支持 字符串(Strings)、列表(Lists)、集合(Sets)、哈希(Hashes)、有序集合(Sorted Sets); 2、redis 存储构成 先分 页;在页里面 分块(防止内存碎片化);块是最小单 ...
分类:
其他好文 时间:
2017-05-07 10:27:45
阅读次数:
167
SGI STL 第二级配置器使用的是memory pool,即内存池,相比较于第一级空间配置器,第二级空间配置器多了许多限制,主要是为了防止申请小额区块过多而造成内存碎片。当然小额区块在配置时实际上是对空间配置器效率的一种伤害。另外,索求任何一块内存,都得需要一些额外内存来进行标记,虽然这些标记占内 ...
分类:
其他好文 时间:
2017-05-04 22:00:42
阅读次数:
350
一、预备知识—程序的内存分配 一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与 ...
分类:
其他好文 时间:
2017-05-04 21:49:10
阅读次数:
227
1. Memcached简介 Memcached是以LiveJurnal旗下Danga Interactive公司的Bard Fitzpatric为首开发的高性能分布式内存缓存服务器。其本质上就是一个内存key-value数据库,但是不支持数据的持久化,服务器关闭之后数 据全部丢失。Memcache ...
分类:
系统相关 时间:
2017-04-21 14:21:10
阅读次数:
236
Memcache工作原理总结一<!--[if!supportLists]-->1.<!--[endif]-->分片原理咱们废话话不多说了,直接看Memcache的原理。首先memcache解决的最大的一个问题:《就是内存多次读取的内存碎片问题》。内存碎片分为内存内部碎片和内存外部碎片。一般是指在外部碎片中出..
分类:
系统相关 时间:
2017-04-18 22:24:55
阅读次数:
191
1.为什么会有年轻代 我们先来屡屡,为什么需要把堆分代?不分代不能完成他所做的事情么?其实不分代完全可以,分代的唯一理由就是优化GC性能。你先想想,如果没有分代,那我们所有的对象都在一块,GC的时候我们要找到哪些对象没用,这样就会对堆的所有区域进行扫描。而我们的很多对象都是朝生夕死的,如果分代的话, ...
分类:
其他好文 时间:
2017-04-10 00:36:38
阅读次数:
137
题记:内存管理一直是C/C++程序的红灯区。关于内存管理的话题,大致有两类侧重点,一类是内存的正确使用,例如C++中new和delete应该成对出现,用RAII技巧管理内存资源,auto_ptr等方面,很多C/C++书籍中都使用技巧的介绍。另一类是内存管理的实现,如linux内核的slab分配器,S ...
分类:
其他好文 时间:
2017-04-08 21:27:19
阅读次数:
251