linux上python cherrypy应用程序未释放内存

linux上python cherrypy应用程序未释放内存,python,memory,cherrypy,tcmalloc,Python,Memory,Cherrypy,Tcmalloc,我有一个长时间运行的进程,它将从数据库中获取100k行,生成一个网页,然后释放所有小对象(列表、元组和dict)。在windows上,每次请求后都会释放内存。然而,在linux上,服务器的内存不断增长 下面的帖子描述了问题所在以及一种可能的解决方案 有没有其他方法可以绕过这个问题,而不必编译我自己的使用tcmalloc的python版本。这个选项将非常困难,因为python由sys admin控制。您可以在自己的工作目录中编译python,而不必尝试让sysadmin替换系统python 首先

我有一个长时间运行的进程,它将从数据库中获取100k行,生成一个网页,然后释放所有小对象(列表、元组和dict)。在windows上,每次请求后都会释放内存。然而,在linux上,服务器的内存不断增长

下面的帖子描述了问题所在以及一种可能的解决方案


有没有其他方法可以绕过这个问题,而不必编译我自己的使用tcmalloc的python版本。这个选项将非常困难,因为python由sys admin控制。

您可以在自己的工作目录中编译python,而不必尝试让sysadmin替换系统python


首先,您应该确认tcmalloc解决方案解决了您的问题,并且不会对应用程序的性能造成太大影响

您可以在自己的工作目录中编译Python,而不是尝试让系统管理员替换系统Python


首先,您应该确认tcmalloc解决方案解决了您的问题,并且不会对应用程序的性能产生太大的影响

我猜我的使用非常普遍,而不是唯一的。必须有一种方法可以使用现有的python分配器,这样它才能将内存释放回操作系统。@Sad,您需要确认链接中描述的问题与您的问题相同。虽然内存可能不会返回到操作系统,但至少应该在解释器中释放内存,以便用于后续请求。如果你看到记忆不断增长,也许你的问题是不同的。我已经证实这是同一个问题。我使用了python中提供的几个内存分析选项,但找不到任何内存泄漏,但程序的内存大小一直在增长。内存也可以在解释器内部重用,问题仅限于linux。所有这些加上我的usecse与原始帖子完全相同(分配大量对象),然后发布它们,这让我感到非常舒服,因为我的问题与帖子中概述的相同。我猜我的用法相当普遍,而不是唯一的。必须有一种方法可以使用现有的python分配器,这样它才能将内存释放回操作系统。@Sad,您需要确认链接中描述的问题与您的问题相同。虽然内存可能不会返回到操作系统,但至少应该在解释器中释放内存,以便用于后续请求。如果你看到记忆不断增长,也许你的问题是不同的。我已经证实这是同一个问题。我使用了python中提供的几个内存分析选项,但找不到任何内存泄漏,但程序的内存大小一直在增长。内存也可以在解释器内部重用,问题仅限于linux。所有这些加上我的usecse与最初的post完全相同(分配大量对象),然后发布它们,这让我感到非常舒服,因为我的问题与post中概述的问题相同。这是glibc的一个“特性”,独立于Python。windows分配器以不同的方式工作,因此您可以获得不同的行为。这是glibc的一个“特性”,独立于Python。windows分配器以不同的方式工作,因此您可以获得不同的行为。