AIX中的程序内存监视
Programatic memory monitoring in AIX
有人能建议使用AIX系统调用来通过程序检查内存使用情况吗?我使用的是一个大型多线程C++应用程序,由于内存中有大量不受限制的缓存,该应用程序目前内存不足(在AIX6.1上使用32位大内存模型)。我当然可以限制缓存的增长,但由于它们的复杂结构,很难计算出它们有多大;更好的IMO只是评估这个过程占用了多少内存,并以此为基础进行限制。
由于使用共享内存,使用非常大的内存模型是不可能的,在短期内使用64位也是不可行的。
对于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)应该能够在系统范围内获得已使用的内存。
相关文章:
- 将字符串存储在c++中的稳定内存中
- C++ 指针的内存地址和指向数组的内存地址如何相同?
- Win32编译器选项和内存分配
- 当vector是tje全局变量时,c++中vector的内存管理
- 带内存和隔离功能的SQLite
- 是否可以通过C++扩展强制多个python进程共享同一内存
- 迭代时从向量和内存中删除对象
- 在C++中打印指向不同基元数据类型的指针的内存地址
- 这个指针和内存代码打印是什么?我不知道是打印垃圾还是如何打印我需要的值
- 多个文件的内存分配错误"在抛出 'std :: bad_alloc' what (): std :: bad_alloc 的实例后终止调用" [C++]
- 为什么示例代码访问IUnknown中已删除的内存
- 如何在C++类内存结构中创建"spacer"?
- 从构造函数抛出异常时如何克服内存泄漏
- malloc() 可能出现内存泄漏
- 如何理解将半精度指针转换为无符号长指针和相关的内存对齐
- 监视C++OpenFrameworks应用程序是否冻结或内存泄漏,然后强制退出并重新启动
- 监视从应用程序写入指定的内存指针从 DLL 接收
- 监视自身进程的内存使用情况
- AIX中的程序内存监视
- 监视内存地址变化的工具