没有任务运行,DolphinDB为什么没有释放内存

昨晚起到今天早上DolphinDB一直闲置在那儿,但是我刚发现DolphinDB内存占用达到了30%(如下图所示,我机器是8GB的内存)。请问没有任务运行的话,DolphinDB为什么没有释放内存?

attachments-2021-06-Kodkz6rM60c8208bb5c9b.png
我执行pnodeRun(clearAllCache)后,内存占用率下降到17%,如下图所示

attachments-2021-06-sd2mDSbD60c820a3d91f2.png
在web上查看内存占用情况,每个节点占用约680MB。

attachments-2021-06-IXQYaZjo60c820b0e543f.png
请问17%这个占用率算正常吗?clearAllCache后释放的这些内存,证明程序并没有在使用,为什么DolphinDB没有自动释放呢?

请先 登录 后评论

1 个回答

logger

占用约680MB这样属于正常,DolphinDB分配大块内存的时候会向系统索要512MB的块。释放后系统至少会保留一个这样的快。

另外为什么系统没有自动释放cache? 只要系统内存没有超过设定的maxMemSize,系统是不会自动释放缓存的。即只有当用户明确告诉系统,内存不用了(比如用undef释放变量,用函数clearAllCache释放缓存等),否则内存不会释放,即使当前没有任务在执行。

在这里要注意内存变量跟缓存是不一样的。内存变量是用户的程序设置的。即便内存不够用了也不会自动释放,必须程序明确去删除这个变量或者置为NULL。

更详细的信息请参阅https://gitee.com/dolphindb/T... 

请先 登录 后评论