问题标签 [tcmalloc]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - tcmalloc:如何在静态编译时覆盖我的 malloc 调用?
当我使用 时LD_PRELOAD=/usr/local/lib/libtcmalloc.so
,我对 malloc 的所有调用都变成了 tcmalloc 调用。但是,当我静态链接 libtcmalloc 时,我发现直接 malloc 被调用,除非我仍然使用该LD_PRELOAD
设置。
那么我怎样才能静态编译 tcmalloc 以使我的 malloc 挂钩到 tcmalloc 呢?
笔记:
- 我使用了很多 C++ 新的等,所以只是 #defining malloc 到 tcmalloc 是行不通的
- 可能我必须自己使用 malloc_hook,但我原以为我可以让 tcmalloc 为我做这件事,因为它显然是在动态链接时做的
linux - 全球使用谷歌的malloc?
我想在 Linux 上试验谷歌的 tcmalloc ......我在这里有一个巨大的项目,有数百个 qmake 生成的 Makefile ......我想找到一种方法让 gcc 全局链接到 tcmalloc(就像它一样与libc)...这可能吗?还是我必须编辑每个 Makefile?
(我不想编辑所有的专业文件,因为它们有数百个)
(另外,我们已经尝试过 LD_PRELOAD 方法,但它的工作并不完全正确)......
free - malloc 实现会将释放的内存返回给系统吗?
我有一个长期存在的应用程序,经常进行内存分配释放。任何malloc
实现都会将释放的内存返回给系统吗?
在这方面,以下行为是什么:
- ptmalloc 1、2(glibc 默认)或 3
- dlmalloc
- tcmalloc(谷歌线程 malloc)
- solaris 10-11 默认 malloc 和 mtmalloc
- FreeBSD 8 默认 malloc (jemalloc)
- 囤积malloc?
更新
如果我有一个应用程序的内存消耗在白天和夜间(例如)可能非常不同,我可以强制任何一个malloc
将释放的内存返回给系统吗?
如果没有这样的返回,释放的内存将被多次换出,但这样的内存只包含垃圾。
python - linux上的python cherrypy应用程序未释放内存
我有一个长时间运行的进程,它将从数据库中获取 100k 行生成一个网页,然后释放所有小对象(列表、元组和字典)。在 Windows 上,每次请求后都会释放内存。但是,在 linux 上,服务器的内存不断增长。
以下帖子描述了问题所在以及一种可能的解决方案。
http://pushingtheweb.com/2010/06/python-and-tcmalloc/
有没有其他方法可以解决这个问题,而不必编译我自己的使用 tcmalloc 的 python 版本。这个选项将很难做到,因为 python 是由系统管理员控制的。
c++ - 使用静态链接替换 Windows tcmalloc
一个C++项目遇到内存碎片问题,尝试如下:
nedmalloc- 没有通过压力测试(15 小时后崩溃),这意味着它在大多数情况下都有效,但不是全部。并且比其他分配器使用更多的内存。
jemalloc- 还没有为 Windows 准备好?
tcmalloc- 使用带有静态链接的主机代码编译,但与 CRT 符号冲突。我可以只使用 tc_malloc(...) 之类的别名来构建自己的分配包装器吗?怎么做?
任何意见?提前致谢。
c - 将 tcmalloc 与 glib 一起使用
我想测试使用 Google 的 tcmalloc 可以获得的性能改进。我的程序是使用 glib 提供的大量实用程序(哈希、列表、数组......)构建的。所以我想要的基本上是让glib使用tcmalloc而不是glibc的malloc。
我可以用两种方法解决这个问题:
- 通过使用
-tcmalloc
选项编译 glib。 - 通过使用
g_mem_set_vtable ()
glib的内存分配函数。
我实际上更喜欢第二个,但我还没有找到任何实现它的例子。
有什么提示吗?这样做有什么想法吗?
ios - ptmalloc、tcmalloc、dmalloc、HOARD 还是 nedmalloc?(在 iOS 和 Android 游戏上)
我有一个游戏,它在 iPad 上因许多小分配而有点占用内存。我有一个用 C++ 编写的自定义游戏引擎。这里有没有人在 iOS 上成功编译了这些其他分配器之一?有什么问题吗?我会让人们知道我的尝试进展如何。
c++ - 用于 STL 的 TCMalloc 分配器
我想将 TCMalloc 与 STL 容器一起使用,因此我需要一个使用 TCMalloc 构建的分配器(例如带有 TBB malloc 的 tbb_allocator)。我找不到任何TCMalloc 文档(如果它被称为文档)。所以我开始探索头文件并找到一个名为STL_Allocator
. 但是我不清楚。来自 stl_allocator.h 的报价:
而 STL_Allocator 模板类的定义是:
我不知道那个Alloc
论点可能是什么。我应该为一些内存分配函数编写一个包装类吗?有人用过 TCMalloc 吗?
python - 使用 Python 类和 numpy 时从未释放内存
基本上我不会在这里发布所有代码,但我会提供一个通用示例。我有一个类,它具有运行和创建大量值的函数。根据我的估计,这个数组不应该超过 10MB。在函数中,它会创建新的并修改应该在 train 中的函数运行后收集的数组。除了放入大数组的返回 tempArray 之外,它们不会在其他地方使用。这是重复的。使用的内存不断增长。我的代码是否存在问题或解决此问题的方法。我在这里阅读了有关 Linux 中 malloc 内存泄漏的信息:http: //pushingtheweb.com/2010/06/python-and-tcmalloc/。
c - “TCMalloc 当前不向系统返回任何内存。”是什么意思?
在http://goog-perftools.sourceforge.net/doc/tcmalloc.html 声明:“CMalloc 当前不向系统返回任何内存。” 我认为这意味着如果我分配 42 MB 并释放它,系统将不会取回它,但下次我分配 47 MB 时它只会多偷 5 MB?我的问题是加载的 dll 或 .so 模块会发生什么。他们是否获得了自己的内存块,直到程序退出才释放。我问是因为如果我想编写运行时可更新的软件,我必须在不退出程序的情况下加载新的 dll。所以我的问题是:如果我使用 -ltcmalloc 并且我不断加载和卸载分配和释放内存的 dll 会导致内存使用量激增吗?我认为这是一个愚蠢的问题,但我不知道每个 dll 是否使用自己的内存分配内容,或者内存分配是否在每个进程级别。