我当时遇到的一个问题就是使用了hyperf的Command形式来执行大批量数据的处理,代码里面已经关闭了相关的连接(redis,mysql等)以及unset掉了大数组之类的操作。虽然使用php内置函数memory_get_usage()观察到确实减少了内存的占用,但是linux服务器使用top来查看MEM参数还是被占用很大的内存,没有减少的迹象。
通过网上一系列查找资料,找到了一篇可以解决这个问题的方式。原文地址:PHP常驻进程,内存泄漏排查指南 - Swoole
现在加上gc_mem_caches()这个函数确实可以看到内存是不会被占用的,只不过网上关于这个函数的说明资料不多,看官方文档说是回收内存碎片的,只是担心在hyperf这样的常驻内存框架(swoole)会不会因此而受到影响。