<div dir="ltr">In my application I need to keep an eye on how much Virtual memory is available for application to use.<div>I am able to get VM Upper limit for process by using getrlimit() (Getting that limit as 15 GB).</div><div> </div><div>If virtual memory for that process reaches to 14.5 GB (i.e. Now only 500 MB VM is free.) we need to stop doing the processing.</div><div>So, I need to understand how much virtual memory is consumed by process at any point.</div><div>In glibc, we were able to get that information using mallinfo(). </div><div>Similar results I want to get using jemalloc. But, I am not getting exact results.</div><div><br></div><div>Below is the equation I am using to get free VM available:</div><div><br></div><div>1. Get maximum size of process's virtual memory (Getting this maxlimit as 15 GB)</div><div>2. For getting process's fixed part (Text + stack) : (This calculation will be done only once)</div><div>     CodeSize = VMSize (Read of /proc/pid/status) - stats.mapped</div><div>   - I assume above equation will give us fixed part of process.</div><div>3. Check if low memory limit hits?</div><div> if  (maxlimit - CodeSize - stats.allocated ) < 500 MB notify process is running out of memory.</div><div><br></div><div>Please correct me if I am missing any counters or doing some wrong assumptions in my calculation.</div><div><br></div><div>Thanks,</div><div>Prajakta</div></div>