忙啊
最近都很忙,和小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