Menu

忙啊

最近都很忙,和小D修改UO服务器的代码,处理一些宕机和不稳定的问题,解决了拍卖行脚本之类的问题。

其他的时间就是玩UO和D3了。然后就是公司里一堆一堆的事情处理。

首先,关于内存池。

在选定了和查看了一些当今的内存池解决方案后,在公司的引擎核心上,加入了[url=http://code.google.com/p/gperftools/]TCMalloc[/url]为核心内存分配器,效率提升很大。

Tcmalloc概述

tcmalloc将内存请求分为两类,大对象请求和小对象请求,大对象为>=32K的对象。

tcmalloc会为每个线程分配线程局部缓冲。对于小对象请求,可以直接从线程局部缓冲区获取,如果线程局部缓冲区没有空闲内存,则从central heap中一次性获取一连串小对象。tcmalloc对于小内存,按8的整数次倍分配,对于大内存,按4K的整数次倍分配。这样做有两个好处,一是分配的时候比较快。二是短期的收益比较大,分配的小内存至多浪费7个字节,大内存则4K。当某个线程缓存当缓存中所有对象的总共大小超过2MB的时候,会对他进行垃圾收集。垃圾收集阈值会自动根据线程数量的增加而减少,这样就不会因为程序有大量线程而过度浪费内存。

然后另一个工作,就是支持了多线程。因为在处理一些Windows消息的时候,线程将会被卡住。所以,我把Windows消息单独创立了一个线程,然后用路由到主线程进行处理。其实,过程中我还试过几个方法,比如创建多个窗口之类的。但如果不是多线程模式的话,都会被卡住的。

然后就是一些编辑器的BUG修改。最近游戏要封测了,所以比较忙。

Categories:   Garfield's Diary

Comments