C++ 是否有任何方法可以查看每个线程的进程的虚拟内存usgae?
我使用的是RHEL 6.3(64位)。 我在我的多线程c/c++程序中做了一些更改(针对特定需求使用std:map),现在我的项目的初始虚拟内存使用率已经非常高(大约900m)。我所做的所有更改都由宏保护 但是在禁用宏之后,我也看不到进程的虚拟内存使用有任何减少 所以我有几个问题要问C++ 是否有任何方法可以查看每个线程的进程的虚拟内存usgae?,c++,c,linux,multithreading,memory,C++,C,Linux,Multithreading,Memory,我使用的是RHEL 6.3(64位)。 我在我的多线程c/c++程序中做了一些更改(针对特定需求使用std:map),现在我的项目的初始虚拟内存使用率已经非常高(大约900m)。我所做的所有更改都由宏保护 但是在禁用宏之后,我也看不到进程的虚拟内存使用有任何减少 所以我有几个问题要问 有没有办法找出哪个线程占用了最大的虚拟内存,这样我就可以隔离问题了 为什么禁用宏后,进程的虚拟内存使用率没有下降 32位(RHEL-6.3)上的相同项目占用的虚拟内存更少(约为-150m)。 几乎是64位操作系统的
g++-Wall-g
)。使用x86-64上的最新编译器(例如),您还可以使用地址消毒器(-fsanize=address
)
在运行(用于测试)程序时,可以使用来查询其地址空间。另见。也试试看。在64位系统上对原始程序进行基准测试(无需任何修改)
我希望你在你的代码和你的修改中使用了一个like
根据定义,在您的应用程序中,所有线程都通用。认为某个特定线程正在消耗内存是错误的——它是进程本身(即运行程序中的任何线程)
也许您想编译
顺便说一句,每个线程都需要一些内存(用于堆栈、TLS等…)-其他线程当然可以看到这些内存,例如,如果您在其中传递一些指针,那么64位上的内存可能比32位上的内存更多。你有多少线?(您可能应该避免拥有十几条线程)。您可能应该使用这些线程进行搜索。当然,用调试信息和警告编译所有程序(例如g++-Wall-g
)。使用x86-64上的最新编译器(例如),您还可以使用地址消毒器(-fsanize=address
)
在运行(用于测试)程序时,可以使用来查询其地址空间。另见。也试试看。在64位系统上对原始程序进行基准测试(无需任何修改)
我希望你在你的代码和你的修改中使用了一个like
根据定义,在您的应用程序中,所有线程都通用。认为某个特定线程正在消耗内存是错误的——它是进程本身(即运行程序中的任何线程)
也许您想编译
顺便说一句,每个线程都需要一些内存(用于堆栈、TLS等…)-其他线程当然可以看到这些内存,例如,如果您在其中传递一些指针,那么64位上的内存可能比32位上的内存更多。你有多少线?(您可能应该避免拥有十几条线程)。您可能应该使用这些线程进行搜索。当然,用调试信息和警告编译所有程序(例如g++-Wall-g
)。使用x86-64上的最新编译器(例如),您还可以使用地址消毒器(-fsanize=address
)
在运行(用于测试)程序时,可以使用来查询其地址空间。另见。也试试看。在64位系统上对原始程序进行基准测试(无需任何修改)
我希望你在你的代码和你的修改中使用了一个like
根据定义,在您的应用程序中,所有线程都通用。认为某个特定线程正在消耗内存是错误的——它是进程本身(即运行程序中的任何线程)
也许您想编译
顺便说一句,每个线程都需要一些内存(用于堆栈、TLS等…)-其他线程当然可以看到这些内存,例如,如果您在其中传递一些指针,那么64位上的内存可能比32位上的内存更多。你有多少线?(您可能应该避免拥有十几条线程)。您可能应该使用这些线程进行搜索。当然,用调试信息和警告编译所有程序(例如g++-Wall-g
)。使用x86-64上的最新编译器(例如),您还可以使用地址消毒器(-fsanize=address
)
在运行(用于测试)程序时,可以使用来查询其地址空间。另见。也试试看。在64位系统上对原始程序进行基准测试(无需任何修改)
我希望你在你的代码和你的修改中使用了一个like
根据定义,在您的应用程序中,所有线程都通用。认为某个特定线程正在消耗内存是错误的——它是进程本身(即运行程序中的任何线程)
也许您想编译
顺便说一句,每个线程都需要一些内存(用于堆栈、TLS等…)-其他线程当然可以看到这些内存,例如,如果您在其中传递一些指针,那么64位上的内存可能比32位上的内存更多。你有多少线?(您可能应该避免有十几个线程)。您可以为您的进程尝试ps命令grep并列出线程 ps-eLF,我记不起按内存使用情况进行排序
请尝试top--command“H”选项以显示线程您可以尝试为进程使用ps command grep并列出线程 ps-eLF,我记不起按内存使用情况进行排序
请尝试top--command“H”选项以显示线程您可以尝试为进程使用ps command grep并列出线程 ps-eLF,我记不起按内存使用情况进行排序
请尝试top--command“H”选项以显示线程您可以尝试为进程使用ps command grep并列出线程 ps-eLF,我记不起按内存使用情况进行排序 尝试top--命令“H”选项
extern void * operator new( size_t, const char *, int );
#if 1
#define MY_NEW() new
#else
#define MY_NEW() new( __FILE__, __LINE__ )
#endif