< 返回版块

linkwik 发表于 2020-02-03 01:28

Tags:rust,channel,vec

关于Rust内存管理的问题,在最开始的时候我没有怎么关心。但是最近在处理大量数据的时候,发现无论使用channel或者Vec来传递数据时,内存会增加并且没有减少的迹象。按照理解,无论使用哪种方法,pop或者Receiver都应该减少内存的。 有点类似于这个问题 https://github.com/rust-lang/rust/issues/56929#issuecomment-448546065 不知道有没有办法可以解决,使用sync_channel内存也是递增

评论区

写评论
nkbai 2020-02-17 17:32

这种基本的问题任何语言应该都解决不了 生产的快,消费的慢,只能堆在内存中了, 如果不想降低生产速度,就想办法提高消费速度喽 对以下内容的回复:

作者 linkwik 2020-02-05 15:00

感谢回复,尝试过,的确可以解决内存增长,但是大量数据处理上,限速就成了一个瓶颈。 对以下内容的回复:

lagudomeze 2020-02-03 11:06

看了一下sync_channel的send的doc 里面说 This function will block until space in the internal buffer becomes available or a receiver is available to hand off the message to 也就是说处理速度 赶不上 产生速度的话,就会一直堆积再内存里?

所以你的场景里,是不是要加入限速,或者使用持久化的消息队列 比较好?

1 共 3 条评论, 1 页