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

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

image.png
我执行pnodeRun(clearAllCache)后,内存占用率下降到17%,如下图所示:
image.png
在web上查看内存占用情况,每个节点占用约680MB。
image.png

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

阅读 1.6k
1 个回答

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

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

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

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进