Memory tmux使用1G RAM,即使在清除所有回滚历史记录之后
我在ubuntu 14.04上使用tmux(实际上是byobu和tmux后端) 我的tmux使用1GB内存(VIRT和RES在Memory tmux使用1G RAM,即使在清除所有回滚历史记录之后,memory,tmux,ubuntu-14.04,byobu,Memory,Tmux,Ubuntu 14.04,Byobu,我在ubuntu 14.04上使用tmux(实际上是byobu和tmux后端) 我的tmux使用1GB内存(VIRT和RES在top中),我已经使用了清除历史记录命令 现在我的回卷消失了,但内存使用率没有下降 这个tmux运行了很长时间,有很多文本在其中滚动top显示它总共使用了超过1小时的CPU时间 原因可能是什么 可能是内存泄漏吗 我能试试什么 我无法重新启动它或做危险的事情,因为该课程运行的实验需要大约一周的时间才能完成…由于没有人回答这个问题,我将对发生的情况进行推测 tmux在内存中为
top
中),我已经使用了清除历史记录
命令
现在我的回卷消失了,但内存使用率没有下降
这个tmux运行了很长时间,有很多文本在其中滚动top
显示它总共使用了超过1小时的CPU时间
原因可能是什么
可能是内存泄漏吗
我能试试什么
我无法重新启动它或做危险的事情,因为该课程运行的实验需要大约一周的时间才能完成…由于没有人回答这个问题,我将对发生的情况进行推测
tmux
在内存中为其历史分配空间,并且当您使用更多的历史时,内存会增长。清除历史会使其不可见,但不会释放实际内存。这意味着tmux
可以使用内存来增加每个打开窗格的总行数,而不管这些窗格当前是否包含任何内容
这可以说是一个bug,或者说是一个糟糕的特性
我没有解决方案。这不是一个bug,当您清除历史记录时,tmux会立即释放内存。由glibc将其返回内核,但它在这方面做得很差。您应该能够看到内存是空闲的,因为如果您清除10000行的历史记录,那么在历史记录再次达到10000行之前,内存使用量不会再次增长。tmux中似乎有一个错误,导致在清除历史记录时无法释放内存 这个错误一直存在到版本1.9a,在版本2.0中修复。我将此作为迟交的答复发布,因为1.9a版似乎仍在使用中(至少对我而言)
tmux 2.5中修复了另一个内存泄漏:
* Handle slow terminals and fast output better: when the amount of data
outstanding gets too large, discard output until it is drained and we are
able to do a full redraw. Prevents tmux sitting on a huge buffer that the
terminal will take forever to consume.
* Do not redraw a client unless we realistically think it can accept the data -
defer redraws until the client has nothing else waiting to write.
Necropost,但这个问题一直持续到最近。x86 xubuntu 18.04上的repos对tmux 2.6的内存使用总是在一两天内达到1GB。我删除了它,并从源代码构建了TMUX2.8。几天来,它的内存使用率一直很低。问题终于解决了。您的Bash/shell历史是否以某种方式覆盖了tmux的历史?我如何才能确定是否是这样?tmux 1.6上存在相同的问题…tmux 1.10与tmux 1.9a存在相同的问题,在shell中键入
reset
后,tmux的内存使用从150M减少到800k。这可能是一个解决办法。如果机器大量交换页面(因为它没有剩余的可用内存),glibc会更快地将内存返回内核吗?我的tmux 2.1仍然内存不足:-(啊,算了吧,这是因为set-g@resurrect capture pane contents'on'
,该选项不可用。