Uno, compilar
https://github.com/gperftools/gperftools/releases
descargue la versión requerida del código en la página de enlace anterior;
cd /home/code/;
tar -zxvf gperftools-2.7.90.tar.gz;
cd gperftools-2.7.90;
../configure --prefix=/usr/local/lib --disable-cpu-profiler --disable-heap-profiler --disable-heap-checker --disable-debugalloc --enable-minimal
make && make install
可根据需求打开关闭指定的模块。 google-perftools的组件,包括TCMalloc、heap-checker、heap-profiler和cpu-profiler共4个组件。
La compilación está completa para generar la biblioteca lib en la ruta especificada por -prefix, nombre de archivo: libtcmalloc_minimall.so
Dos, usa
1) Enlace estático
Agregue /usr/local/lib/libtcmalloc_minimal.a al final de la opción de compilación para vincular la biblioteca estática
2) Enlace dinámico
Inserte -L / usr / local / lib -ltcmalloc_minimal aquí en la opción de compilación;
3) , Reinicie el proceso para usarlo,
ejecute export LD_PRELOAD = / usr / local / lib / libtcmalloc_minimal.so antes de iniciar el proceso;
Tres, otros usos
1) Detección de fugas de memoria
xxxxxx
Cuatro, solución de problemas
1. Utilice el enlace tcmalloc con la versión 2.5 y superior, y después de solicitar la liberación de una memoria más grande (prueba 30g), la memoria sigue siendo alta, lo que provoca una supuesta pérdida de memoria;
Razón: La versión alta de tcmalloc retendrá una parte de la memoria y no la devolverá al sistema operativo. Esta parte de la memoria puede ser solicitada por otros procesos cuando la memoria del sistema es alta; además, tcmalloc proporciona la interfaz. MallocExtension_ReleaseToSystem (gperftools-2.7 \ src \ gperftools \ malloc_extension_c.h) Libera la memoria retenida en el sistema operativo;
PERFTOOLS_DLL_DECL void MallocExtension_ReleaseToSystem(size_t num_bytes);
Materiales de referencia:
Introducción a tcmalloc: https://zhuanlan.zhihu.com/p/29216091