heiyeluren / xmm

XMM is a high performance third party memory manager for Go environments that is not affected by Gc and guarantees high performance. XMM是一个在Go语言环境中完全自主实现的第三方内存管理库,不依赖于Go本身的任何内存管理能力,纯自主实现能够应对各种场景下大小内存的 分配/释放 工作,能自主构建高性能的 链表/树/哈希表等各类数据结构,能良好完美的逃逸掉Go内置的GC机制,是构建高性能程序基础设施。

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

请问适用场景

luluxiao94 opened this issue · comments

  1. 如果项目中GC频率较低,或者说运行时golang的GC对项目不会产生任何抖动,是否也没太大必要使用XMM这个项目来手动管理内存?
  2. 这个项目是否主要适用于小对象过多造成的频繁GC导致cpu抖动这种场景,这种场景下手动管理就可以避免这种情况了?
  3. 比如说,像一个长期使用的sync.Pool,是否使用XMM管理就比较合适?
  1. 如果完全没有gc问题可以不考虑,常规就是CURD的程序,无所谓是否gc的问题。

  2. 这个项目适用对象多,另外有一些需要自己独立管理内存的场景:
    a. 其实很多人有需要自己独立控制内存,比如有一个内存我想常驻,不想被没事gc就扫描一下,就可以使用xmm;
    b. 我举个例子,比如我一个配置文件,会热更新,并且经常会被程序访问这个配置文件中的内容,那我就可以放xmm里,gc不会管它。
    c. 临时变量这种,用完就扔的没必要用xmm
    d. 延展一点说:如果你有一些想要本地Cache的东西,建议采用XMM,不会频繁被gc扫描;比如有些数据要热加载,然后长期会存在,程序自己会更新,那就用XMM非常合适。

  3. 对的,就是处理类似于使用 sync.Pool 或者自己用一个[]byte存储数据不被gc的场景

希望能够帮到您~

感谢解答~