How can I measure the actual memory usage of an application or process?
With ps
or similar tools you will only get the amount of memory pages allocated by that process. This number is correct, but:
does not reflect the actual amount of memory used by the application, only the amount of memory reserved for it
can be misleading if pages are shared, for example by several threads or by using dynamically linked libraries
If you really want to know what amount of memory your application actually uses, you need to run it within a profiler. For example, Valgrind can give you insights about the amount of memory used, and, more importantly, about possible memory leaks in your program. The heap profiler tool of Valgrind is called 'massif':
Massif is a heap profiler. It performs detailed heap profiling by taking regular snapshots of a program's heap. It produces a graph showing heap usage over time, including information about which parts of the program are responsible for the most memory allocations. The graph is supplemented by a text or HTML file that includes more information for determining where the most memory is being allocated. Massif runs programs about 20x slower than normal.
As explained in the Valgrind documentation, you need to run the program through Valgrind:
valgrind --tool=massif <executable> <arguments>
Massif writes a dump of memory usage snapshots (e.g. massif.out.12345
). These provide, (1) a timeline of memory usage, (2) for each snapshot, a record of where in your program memory was allocated. A great graphical tool for analyzing these files is massif-visualizer. But I found ms_print
, a simple text-based tool shipped with Valgrind, to be of great help already.
To find memory leaks, use the (default) memcheck
tool of valgrind.
How to measure the total memory consumption of the current process programmatically in .NET?
Refer to this SO question
Further try this
Process currentProcess = System.Diagnostics.Process.GetCurrentProcess();
long totalBytesOfMemoryUsed = currentProcess.WorkingSet64;
Related Topics
Change the X-Frame-Options to Allow All Domains
Escape Variable in Bash Script Curl Request
How to Find Which Position a Word Is in a String
Remove a Specific Character Using Awk or Sed
Awk or Sed to Remove All Text After X Occurence in Each Line of File
How to Redirect Stderr and Stdout to Different Files in the Same Line in Script
Understanding User File Ownership in Docker: How to Avoid Changing Permissions of Linked Volumes
How to Change the Default Browser Used by the Ipython/Jupyter Notebook in Linux
How Does Sigint Relate to the Other Termination Signals Such as Sigterm, Sigquit and Sigkill
How to Preserve Line Breaks When Storing Command Output to a Variable
Compiling C++ on Remote Linux Machine - "Clock Skew Detected" Warning
How to Run a Script At a Certain Time on Linux
Using the Passwd Command from Within a Shell Script
How Is the System Call in Linux Implemented
Rename Files and Directories Recursively Under Ubuntu /Bash
How to Print Third Column to Last Column