tcmalloc
蜗牛_Wolf
有道无术,术可求;无道有术,止于术。
展开
-
了解实现一个高并发的内存池——TLS Memmory Pool
为什么需要内存池?1.效率问题:如果我们直接向系统申请内存,当我们需要频繁的申请释放内存时,就需要频繁的与系统层产生交互,多次切换用户态和内核态,而用户态和内核态之间的切换的消耗是非常大的,因此申请内存的消耗就会很大,程序效率也就随之降低了。2.内存碎片问题:如果我们频繁的申请和释放小块的内存,系统的内存就会因此被碎片化,虽然总的内存被占用并不多,但是却没有了连续的大块内存,这个时候如果我们需要使用大内存的空间时,就无法申请了。实现一个高并发的内存现在大部分的开发环境都是多核多线程,在申请内存转载 2020-12-18 14:41:57 · 364 阅读 · 0 评论 -
基于tc_malloc的高并发内存池
内存碎片问题;性能问题;高并发(在多线程同时申请内存时,效率依旧很高)。threadcache是解决高并发的性能问题,因为没有锁;centralcache是平衡threadcache资源竞争的问题,避免一个线程用多了,另一个线程没得用;但是这里的平衡会付出一定的代价,当多个线程同时来申请时需要加锁,CentralCache下面挂的是一个一个的span,span是一些内存对象的集合,这些内存...转载 2019-12-25 19:56:10 · 690 阅读 · 0 评论 -
深入了解tcmalloc(一):windows环境下无缝拦截技术初探
概述:又到了一个总结提炼的阶段,这次想具体聊聊游戏引擎中使用的内存管理模块tcmalloc组件的使用心得。项目的前期曾经遇到过内存瓶颈,特别是windows系统下的客户端程序在经历长时间运行之后会出现内存占用率很高疑似泄漏的现象,排查了很久都没有找到原因,甚至一度无法定位问题出自游戏脚本层还是引擎层,后来在引擎中链接了tcmalloc组件,通过实时dump程序的内存信息最终找...转载 2019-12-25 18:14:10 · 1108 阅读 · 0 评论