Действительно сложно определить, сколько памяти процесс использует в операционной системе, которая поддерживает виртуальную память.
Проблема не в том, сколько памяти она использует, а в том, какая часть является частной и какая общая.
Вы можете посмотреть / proc / pid / maps или / proc / pid / smaps (возможно). Эти файлы сообщат вам только о том, сколько памяти процесс сопоставил с его адресным пространством, а не о том, сколько он использует, и определенно не о том, как много общего используется другими процессами в системе.
Даже «приватные» карты могут быть общими, потому что fork () выполняет копирование при записи, поэтому личная страница может быть предоставлена другим (связанным - обычно родительским или родственным) процессам. Более того, страницы, которые были отображены, но никогда не использовались, вообще не будут занимать место.
RSS (размер резидентного набора) каждого сопоставления можно увидеть, но это только говорит вам, сколько резидентов (в ОЗУ, в отличие от выгруженного в файл подкачки, еще не выделено или еще не загружено по требованию из сопоставленного файла), теперь, сколько общего и с чем.
Полагаю, вам лучше всего посчитать количество личной анонимной памяти, что в некоторых случаях может быть в порядке.