Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(210)

Side by Side Diff: content/app/content_main_runner.cc

Issue 10823205: Report memory retained by memory allocator internals. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Replace GetProperty with GetAllocatorWasteSize Created 8 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/public/app/content_main_runner.h" 5 #include "content/public/app/content_main_runner.h"
6 6
7 #include <stdlib.h> 7 #include <stdlib.h>
8 8
9 #include "base/allocator/allocator_extension.h" 9 #include "base/allocator/allocator_extension.h"
10 #include "base/at_exit.h" 10 #include "base/at_exit.h"
(...skipping 465 matching lines...) Expand 10 before | Expand all | Expand 10 after
476 memset(&sandbox_info_, 0, sizeof(sandbox_info_)); 476 memset(&sandbox_info_, 0, sizeof(sandbox_info_));
477 #endif 477 #endif
478 } 478 }
479 479
480 ~ContentMainRunnerImpl() { 480 ~ContentMainRunnerImpl() {
481 if (is_initialized_ && !is_shutdown_) 481 if (is_initialized_ && !is_shutdown_)
482 Shutdown(); 482 Shutdown();
483 } 483 }
484 484
485 #if defined(USE_TCMALLOC) 485 #if defined(USE_TCMALLOC)
486 static bool GetPropertyThunk(const char* name, size_t* value) { 486 static bool GetAllocatorWasteSizeThunk(size_t* size) {
487 return MallocExtension::instance()->GetNumericProperty(name, value); 487 size_t heap_size, allocated_bytes, unmapped_bytes;
488 MallocExtension* ext = MallocExtension::instance();
489 if (ext->GetNumericProperty("generic.heap_size", &heap_size) &&
darin (slow to review) 2012/10/23 17:28:30 nit: Same comment as before. We shouldn't be hard
alexeif 2012/10/23 18:00:15 I'm not sure. These strings are hardcoded in the t
490 ext->GetNumericProperty("generic.current_allocated_bytes",
491 &allocated_bytes) &&
492 ext->GetNumericProperty("tcmalloc.pageheap_unmapped_bytes",
493 &unmapped_bytes)) {
494 *size = heap_size - allocated_bytes - unmapped_bytes;
495 return true;
496 }
497 DCHECK(false);
498 return false;
488 } 499 }
489 500
490 static void GetStatsThunk(char* buffer, int buffer_length) { 501 static void GetStatsThunk(char* buffer, int buffer_length) {
491 MallocExtension::instance()->GetStats(buffer, buffer_length); 502 MallocExtension::instance()->GetStats(buffer, buffer_length);
492 } 503 }
493 504
494 static void ReleaseFreeMemoryThunk() { 505 static void ReleaseFreeMemoryThunk() {
495 MallocExtension::instance()->ReleaseFreeMemory(); 506 MallocExtension::instance()->ReleaseFreeMemory();
496 } 507 }
497 #endif 508 #endif
(...skipping 27 matching lines...) Expand all
525 #if defined(TYPE_PROFILING) 536 #if defined(TYPE_PROFILING)
526 base::type_profiler::InterceptFunctions::SetFunctions( 537 base::type_profiler::InterceptFunctions::SetFunctions(
527 base::type_profiler::NewInterceptForTCMalloc, 538 base::type_profiler::NewInterceptForTCMalloc,
528 base::type_profiler::DeleteInterceptForTCMalloc); 539 base::type_profiler::DeleteInterceptForTCMalloc);
529 #endif 540 #endif
530 541
531 // For tcmalloc, we need to tell it to behave like new. 542 // For tcmalloc, we need to tell it to behave like new.
532 tc_set_new_mode(1); 543 tc_set_new_mode(1);
533 544
534 // On windows, we've already set these thunks up in _heap_init() 545 // On windows, we've already set these thunks up in _heap_init()
535 base::allocator::SetGetPropertyFunction(GetPropertyThunk); 546 base::allocator::SetGetAllocatorWasteSizeFunction(
547 GetAllocatorWasteSizeThunk);
536 base::allocator::SetGetStatsFunction(GetStatsThunk); 548 base::allocator::SetGetStatsFunction(GetStatsThunk);
537 base::allocator::SetReleaseFreeMemoryFunction(ReleaseFreeMemoryThunk); 549 base::allocator::SetReleaseFreeMemoryFunction(ReleaseFreeMemoryThunk);
538 550
539 // Provide optional hook for monitoring allocation quantities on a 551 // Provide optional hook for monitoring allocation quantities on a
540 // per-thread basis. Only set the hook if the environment indicates this 552 // per-thread basis. Only set the hook if the environment indicates this
541 // needs to be enabled. 553 // needs to be enabled.
542 const char* profiling = getenv(tracked_objects::kAlternateProfilerTime); 554 const char* profiling = getenv(tracked_objects::kAlternateProfilerTime);
543 if (profiling && 555 if (profiling &&
544 (atoi(profiling) == tracked_objects::TIME_SOURCE_TYPE_TCMALLOC)) { 556 (atoi(profiling) == tracked_objects::TIME_SOURCE_TYPE_TCMALLOC)) {
545 tracked_objects::SetAlternateTimeSource( 557 tracked_objects::SetAlternateTimeSource(
(...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after
799 811
800 DISALLOW_COPY_AND_ASSIGN(ContentMainRunnerImpl); 812 DISALLOW_COPY_AND_ASSIGN(ContentMainRunnerImpl);
801 }; 813 };
802 814
803 // static 815 // static
804 ContentMainRunner* ContentMainRunner::Create() { 816 ContentMainRunner* ContentMainRunner::Create() {
805 return new ContentMainRunnerImpl(); 817 return new ContentMainRunnerImpl();
806 } 818 }
807 819
808 } // namespace content 820 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698