有没有人建议使用AIX系统调用来以编程方式检查内存使用情况?我正在使用一个大型多线程C++应用程序,由于大量无限系列的内存缓存,该应用程序目前正在耗尽内存(在AIX6.1上使用32位大内存模型)。我当然可以限制缓存的增长,但由于它们的复杂结构,很难计算出它们有多大;更好的做法是评估进程占用了多少内存并基于此进行限制。
由于共享内存的使用,使用超大内存模型是不可能的,而且在短期内使用64位也是不可行的。
发布于 2012-01-25 04:19:07
对于AIX,我发现以下内容在我的应用程序中可以很好地工作:
#include <unistd.h>
#include <sys/types.h>
#include <sys/resource.h>
// total physical memory (in bytes)
size_t total_memory = sysconf(_SC_AIX_REALMEM) * 1024;
// maximum resident set of the process
struct rusage usage;
getrusage(RUSAGE_SELF, &usage);
size_t used_memory = (usage.ru_maxrss)*1024);我相信使用vminfo (/usr/include/sys/vminfo.h)应该能够获得系统范围内使用的内存。
https://stackoverflow.com/questions/8785469
复制相似问题