jemalloc for delphi/fpc compatible(win/linux/ros)
- ARM Linux
- MIPS Linux
- IA32 Linux
- X64 Linux
- win32
- win64
- server2012
- server2016
- server2019
- ROS
- delphiXE10以上的版本
- fpc
- codetyphon
- fpc-jemalloc 这是已知的一个fpc开源库,它对delphi支持不友好,并且不提供windows动态库,开源jemalloc库但不支持delphi,可以当成针对delphi的做法,不是开源
- fastmm5 原生MM库,个人一直很喜欢,但是对于fpc和多平台支持不好
- 我的开源项目 ZServer4D/ZAI/zAnaylsis 这些库如果放到FPC,MM是个大问题
- jemalloc 目前是FPC程序可挂载MM库的最佳选择
- 建议编译前把 https://github.com/jemalloc/jemalloc 拉下来对比jemalloc.h的函数原型
- 原型如果发生变化,可能jemalloc做了革命性更新,这时可以提个issus,或则自己根据原型重构一下jemalloc4p.pas
- 32位系统使用 jemalloc_IA32.dll
- 64位系统使用 jemalloc_X64.dll
- windows已在引入代码自动区分系统,把jemalloc4p.pas包含进工程后自动生效
- 提示:windows预编译库需要vcruntime140依赖库(vs2017)
- linux编译会根据系统自动生成,树莓派4p大概2分钟左右完成
- 编译后把libjemalloc.so考到工程目录
- 用nm命令查看一下导出符号,nm ./libjemalloc.so,不同环境会影响构建出来的导出符号
- 在工程引入jemalloc4p.pas后编译,如果发现undefined refence xxx这类东西,需要修改一下导出符号
- ZServer4D如果用fpc在linux跑,上了jemalloc4p,不会再出现收发速度慢的问题
- 使用ZServer4D开发IOT板子,jemalloc4p是必备库,不多解释
- ubuntu这类linux如果是裸系统需要提前部署一些东西,sudo apt-get install autoconf automake libtool
- debian系统可以直接编译安装
git clone https://github.com/jemalloc/jemalloc
cd jemalloc
./autoconf
./configure
make -j4
sudo make install PREFIX=/usr/lib
- 如果使用IOS静态链接库,需要自己编译,弄完以后把libjemalloc.a考到delphi工程来链接
- 如果使用OSX动态库,把libjemalloc.dylib考到delphi工程中一起打包
$ git clone https://github.com/jemalloc/jemalloc
$ cd jemalloc
$ ./autoconf
$ ./configure
$ make -j2
$ make install
by.qq600585
2021-6