mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-11-09 12:51:09 +02:00
Here's example -m output after these changesets are applied:
```
_size (MiB)_: _category_
2798.61: vsize
136.80: resident
142.89: resident-according-to-smaps
97.84: - anonymous (rw-p)
23.98: - /home/njn/moz/servo/components/servo/target/servo (r-xp)
6.58: - [heap] (rw-p)
5.36: - other
3.51: - /usr/lib/x86_64-linux-gnu/dri/i965_dri.so (r-xp)
1.33: - /lib/x86_64-linux-gnu/libc-2.19.so (r-xp)
0.93: - /home/njn/moz/servo/components/servo/target/servo (r--p)
0.76: - /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.20 (r-xp)
0.74: - /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0 (r-xp)
0.50: - /lib/x86_64-linux-gnu/libcrypto.so.1.0.0 (r-xp)
0.50: - /lib/x86_64-linux-gnu/libglib-2.0.so.0.4200.1 (r-xp)
0.45: - /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1.2.0 (r-xp)
0.43: - /lib/x86_64-linux-gnu/libm-2.19.so (r-xp)
30.85: system-heap-allocated
4.91: jemalloc-heap-allocated
6.11: jemalloc-heap-active
120.00: jemalloc-heap-mapped
```
The `resident-according-to-smaps` line is new, as are all the indented lines beneath it. This is useful particularly because it shows how much memory is taken up by code, e.g. the line ending in `servo (r-xp)` shows that the `servo` executable's code alone takes up 24 MiB of physical memory.
Source-Repo: https://github.com/servo/servo
Source-Revision: eb7e86ac4e21334e807a81ed01348a82ac7610b5
88 lines
1.9 KiB
Rust
88 lines
1.9 KiB
Rust
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
#![feature(alloc)]
|
|
#![feature(box_syntax)]
|
|
#![feature(collections)]
|
|
#![feature(core)]
|
|
#![feature(env)]
|
|
#![feature(hash)]
|
|
#![feature(int_uint)]
|
|
#![feature(io)]
|
|
#![feature(optin_builtin_traits)]
|
|
#![feature(path)]
|
|
#![feature(plugin)]
|
|
#![feature(rustc_private)]
|
|
#![feature(std_misc)]
|
|
#![feature(unicode)]
|
|
#![feature(unsafe_destructor)]
|
|
|
|
#![allow(missing_copy_implementations)]
|
|
|
|
#[macro_use] extern crate log;
|
|
|
|
extern crate alloc;
|
|
#[macro_use] extern crate bitflags;
|
|
extern crate collections;
|
|
extern crate cssparser;
|
|
extern crate geom;
|
|
extern crate getopts;
|
|
extern crate layers;
|
|
extern crate libc;
|
|
#[no_link] #[macro_use] extern crate cssparser;
|
|
extern crate rand;
|
|
#[cfg(target_os="linux")]
|
|
extern crate regex;
|
|
extern crate "rustc-serialize" as rustc_serialize;
|
|
#[cfg(target_os="macos")]
|
|
extern crate task_info;
|
|
extern crate "time" as std_time;
|
|
extern crate text_writer;
|
|
extern crate selectors;
|
|
extern crate string_cache;
|
|
extern crate unicode;
|
|
extern crate url;
|
|
|
|
#[no_link] #[macro_use] #[plugin]
|
|
extern crate string_cache_macros;
|
|
extern crate lazy_static;
|
|
|
|
pub use selectors::smallvec;
|
|
|
|
use std::sync::Arc;
|
|
|
|
pub mod cache;
|
|
pub mod cursor;
|
|
pub mod debug_utils;
|
|
pub mod deque;
|
|
pub mod dlist;
|
|
pub mod fnv;
|
|
pub mod geometry;
|
|
pub mod logical_geometry;
|
|
pub mod memory;
|
|
pub mod namespace;
|
|
pub mod opts;
|
|
pub mod persistent_list;
|
|
pub mod range;
|
|
pub mod resource_files;
|
|
pub mod str;
|
|
pub mod task;
|
|
pub mod tid;
|
|
pub mod time;
|
|
pub mod taskpool;
|
|
pub mod task_state;
|
|
pub mod vec;
|
|
pub mod workqueue;
|
|
|
|
pub fn breakpoint() {
|
|
unsafe { ::std::intrinsics::breakpoint() };
|
|
}
|
|
|
|
// Workaround for lack of `ptr_eq` on Arcs...
|
|
#[inline]
|
|
pub fn arc_ptr_eq<T: 'static + Send + Sync>(a: &Arc<T>, b: &Arc<T>) -> bool {
|
|
let a: &T = &**a;
|
|
let b: &T = &**b;
|
|
(a as *const T) == (b as *const T)
|
|
}
|