代码之家  ›  专栏  ›  技术社区  ›  Jérôme

如何知道线程内存使用情况?

  •  3
  • Jérôme  · 技术社区  · 17 年前

    有可能知道一个给定的 爬行器 线程?我对类似vmrss的信息感兴趣。

    3 回复  |  直到 17 年前
        1
  •  5
  •   Zorglub    17 年前

    每个线程使用一个固定大小的堆栈,该堆栈在线程启动时创建。一般为512k/1m,但在启动时仅为虚拟大小。

    然而,对于动态分配数据(malloc),它是一个进程范围的信息,而不是每个线程。注意,一些替代的malloc实现(比如tcmalloc)可以提供更高级的统计信息。

        2
  •  0
  •   dmityugov    17 年前

    此外,操作系统本身可能会在单独的线程中释放内存,以加快对free()函数的调用,从而使收集正确的统计信息更容易编译

        3
  •  0
  •   Christophe Vu-Brugier    17 年前

    根据我使用pthread库的经验,如果线程是用默认属性创建的,那么它的堆栈大小是10 MB。它可能是特定于平台的。

    如果您对减小堆栈大小感兴趣,可以使用pthread_attr_setstacksize()。为了估计堆栈大小的适当值,可以使用名为“checkstack.pl”的脚本。它在linux内核源代码中提供(在“scripts”目录下)。

    也见 http://www.kegel.com/stackcheck