PassByYou888/ZServer4D

Lazarus下调用SendCompleteBuffer会疯狂申请内存

hbxfwjww opened this issue · 1 comments

Lazarus版本:2.1.0
FPC版本:3.3.1
网络组件:Synapse & Indy
代码:转换自Examples\20.HelloWorldServerWithLinux\ClientToLinuxServer
现象:
在执行client.SendCompleteBuffer后,会疯狂申请物理内存,数秒耗尽16G物理内存后开始占用页面文件,系统开始卡顿并很快失去响应。

序列包在分包时,会拆分成无数小包,内存管理器给小包增加了很多附加信息.导致内存爆炸.
解决办法,
1,使用小型buff缓冲区
2,关闭序列包支持机制
3,换一个更先进的内存管理器挂载上去即可,比如tcm,jem,fastmm(我不知道它是否可以Linux使用,如果能用的话)

by.qq600585