aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_prof/src/memory_usage.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_prof/src/memory_usage.rs')
-rw-r--r--crates/ra_prof/src/memory_usage.rs21
1 files changed, 10 insertions, 11 deletions
diff --git a/crates/ra_prof/src/memory_usage.rs b/crates/ra_prof/src/memory_usage.rs
index 9768f656c..ee79ec3ee 100644
--- a/crates/ra_prof/src/memory_usage.rs
+++ b/crates/ra_prof/src/memory_usage.rs
@@ -1,26 +1,25 @@
1//! FIXME: write short doc here 1//! FIXME: write short doc here
2
3use std::fmt; 2use std::fmt;
4 3
4use cfg_if::cfg_if;
5
5pub struct MemoryUsage { 6pub struct MemoryUsage {
6 pub allocated: Bytes, 7 pub allocated: Bytes,
7 pub resident: Bytes, 8 pub resident: Bytes,
8} 9}
9 10
10impl MemoryUsage { 11impl MemoryUsage {
11 #[cfg(all(feature = "jemalloc", not(target_env = "msvc")))]
12 pub fn current() -> MemoryUsage { 12 pub fn current() -> MemoryUsage {
13 jemalloc_ctl::epoch::advance().unwrap(); 13 cfg_if! {
14 MemoryUsage { 14 if #[cfg(target_os = "linux")] {
15 allocated: Bytes(jemalloc_ctl::stats::allocated::read().unwrap()), 15 // Note: This is incredibly slow.
16 resident: Bytes(jemalloc_ctl::stats::resident::read().unwrap()), 16 let alloc = unsafe { libc::mallinfo() }.uordblks as u32 as usize;
17 MemoryUsage { allocated: Bytes(alloc), resident: Bytes(0) }
18 } else {
19 MemoryUsage { allocated: Bytes(0), resident: Bytes(0) }
20 }
17 } 21 }
18 } 22 }
19
20 #[cfg(any(not(feature = "jemalloc"), target_env = "msvc"))]
21 pub fn current() -> MemoryUsage {
22 MemoryUsage { allocated: Bytes(0), resident: Bytes(0) }
23 }
24} 23}
25 24
26impl fmt::Display for MemoryUsage { 25impl fmt::Display for MemoryUsage {