mirror of
https://github.com/servo/servo.git
synced 2025-07-23 23:33:43 +01:00
Various memory measurement improvements (#36834)
The two significant changes here are 1) a commit that frees memory used to perform memory reporting once the reporting is complete, 2) memory reporting for the system font service. There are various other commits that remove `#[ignore_malloc_size_of]` attributes for data that we are now able to measure, but they do not significantly change our measurements when testing servo.org. Testing: Comparing the output of about:memory on servo.org. --------- Signed-off-by: Josh Matthews <josh@joshmatthews.net>
This commit is contained in:
parent
e9f364ef51
commit
ba8f923201
19 changed files with 135 additions and 49 deletions
|
@ -14,6 +14,7 @@ use embedder_traits::{
|
|||
use euclid::Rect;
|
||||
use ipc_channel::ipc::IpcSender;
|
||||
use log::warn;
|
||||
use malloc_size_of_derive::MallocSizeOf;
|
||||
use pixels::Image;
|
||||
use strum_macros::IntoStaticStr;
|
||||
use style_traits::CSSPixel;
|
||||
|
@ -188,7 +189,7 @@ pub struct CompositionPipeline {
|
|||
}
|
||||
|
||||
/// A mechanism to send messages from ScriptThread to the parent process' WebRender instance.
|
||||
#[derive(Clone, Deserialize, Serialize)]
|
||||
#[derive(Clone, Deserialize, MallocSizeOf, Serialize)]
|
||||
pub struct CrossProcessCompositorApi(pub IpcSender<CompositorMsg>);
|
||||
|
||||
impl CrossProcessCompositorApi {
|
||||
|
|
|
@ -279,7 +279,6 @@ thread_local!(static SEEN_POINTERS: LazyCell<RefCell<HashSet<*const c_void>>> =
|
|||
/// The function is expected to call all the desired [MallocSizeOf::size_of]
|
||||
/// for allocations reachable from the current thread.
|
||||
pub fn perform_memory_report<F: FnOnce(&mut MallocSizeOfOps)>(f: F) {
|
||||
SEEN_POINTERS.with(|pointers| pointers.borrow_mut().clear());
|
||||
let seen_pointer = move |ptr| SEEN_POINTERS.with(|pointers| !pointers.borrow_mut().insert(ptr));
|
||||
let mut ops = MallocSizeOfOps::new(
|
||||
servo_allocator::usable_size,
|
||||
|
@ -287,4 +286,9 @@ pub fn perform_memory_report<F: FnOnce(&mut MallocSizeOfOps)>(f: F) {
|
|||
Some(Box::new(seen_pointer)),
|
||||
);
|
||||
f(&mut ops);
|
||||
SEEN_POINTERS.with(|pointers| {
|
||||
let mut pointers = pointers.borrow_mut();
|
||||
pointers.clear();
|
||||
pointers.shrink_to_fit();
|
||||
});
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue