#include <unistd.h> // for getpid()
#include <memory>
#include <fstream>
#include <sstream>
#include <iostream>
class MemUsage {
public:
unsigned size, resident, share, text, lib, data, dirty;
MemUsage() {
std::auto_ptr<std::istream> is(file_statm());
*is >> size >> resident >> share >> text >> lib >> data >> dirty;
}
private:
static std::istream* file_statm() {
std::ostringstream os("/proc/");
os << getpid() << "/statm";
return new std::ifstream(os.str().c_str());
}
};
std::ostream& operator<< (std::ostream &os, const MemUsage &mu) {
return os << "size: " << mu.size << ", RSS: " << mu.resident
<< ", share: " << mu.share << ", text: " << mu.text
<< ", lib: " << mu.lib << ", data: " << mu.data
<< ", dt: " << mu.dirty;
}
#include <vector>
#include <iostream>
#include <unistd.h>
int main()
{
std::cout << MemUsage() << std::endl;
std::vector<int> x;
x.reserve(1024);
sleep(1);
std::cout << MemUsage() << std::endl;
}
I2luY2x1ZGUgPHVuaXN0ZC5oPiAvLyBmb3IgZ2V0cGlkKCkKCiNpbmNsdWRlIDxtZW1vcnk+CiNpbmNsdWRlIDxmc3RyZWFtPgojaW5jbHVkZSA8c3N0cmVhbT4KI2luY2x1ZGUgPGlvc3RyZWFtPgoKY2xhc3MgTWVtVXNhZ2UgewpwdWJsaWM6CiAgdW5zaWduZWQgc2l6ZSwgcmVzaWRlbnQsIHNoYXJlLCB0ZXh0LCBsaWIsIGRhdGEsIGRpcnR5OwoKICBNZW1Vc2FnZSgpIHsKICAgIHN0ZDo6YXV0b19wdHI8c3RkOjppc3RyZWFtPiBpcyhmaWxlX3N0YXRtKCkpOwogICAgKmlzID4+IHNpemUgPj4gcmVzaWRlbnQgPj4gc2hhcmUgPj4gdGV4dCA+PiBsaWIgPj4gZGF0YSA+PiBkaXJ0eTsKICB9Cgpwcml2YXRlOgogIHN0YXRpYyBzdGQ6OmlzdHJlYW0qIGZpbGVfc3RhdG0oKSB7CiAgICBzdGQ6Om9zdHJpbmdzdHJlYW0gb3MoIi9wcm9jLyIpOwogICAgb3MgPDwgZ2V0cGlkKCkgPDwgIi9zdGF0bSI7CiAgICByZXR1cm4gbmV3IHN0ZDo6aWZzdHJlYW0ob3Muc3RyKCkuY19zdHIoKSk7CiAgfQp9OwoKc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8IChzdGQ6Om9zdHJlYW0gJm9zLCBjb25zdCBNZW1Vc2FnZSAmbXUpIHsKICByZXR1cm4gb3MgPDwgInNpemU6ICIgPDwgbXUuc2l6ZSA8PCAiLCBSU1M6ICIgPDwgbXUucmVzaWRlbnQKICAgIDw8ICIsIHNoYXJlOiAiIDw8IG11LnNoYXJlIDw8ICIsIHRleHQ6ICIgPDwgbXUudGV4dAogICAgPDwgIiwgbGliOiAiIDw8IG11LmxpYiA8PCAiLCBkYXRhOiAiIDw8IG11LmRhdGEKICAgIDw8ICIsIGR0OiAiIDw8IG11LmRpcnR5Owp9CgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8aW9zdHJlYW0+CiNpbmNsdWRlIDx1bmlzdGQuaD4KCmludCBtYWluKCkKewogICAgc3RkOjpjb3V0IDw8IE1lbVVzYWdlKCkgPDwgc3RkOjplbmRsOwogICAgc3RkOjp2ZWN0b3I8aW50PiB4OwogICAgeC5yZXNlcnZlKDEwMjQpOwogICAgc2xlZXAoMSk7CiAgICBzdGQ6OmNvdXQgPDwgTWVtVXNhZ2UoKSA8PCBzdGQ6OmVuZGw7Cn0=
size: 3212849700, RSS: 3212849708, share: 3076204261, text: 3079200976, lib: 0, data: 134520139, dt: 3077746676
size: 3212849700, RSS: 3212849708, share: 3076204261, text: 3079200976, lib: 0, data: 134520139, dt: 3077746676